benchs: no not bench --phmod-typing
[nit.git] / c_src / parser._sep.c
index a2e5081..f102e5d 100644 (file)
 /* This C file is generated by NIT to compile module parser. */
 #include "parser._sep.h"
-val_t parser___State___state(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 10, LOCATE_parser___State___state};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  tracehead = trace.prev;
-  return ATTR_parser___State____state( self) /*State::_state*/;
-}
-void parser___State___state__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10, LOCATE_parser___State___state__eq};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  ATTR_parser___State____state( self) /*State::_state*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
-val_t parser___State___nodes(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 13, LOCATE_parser___State___nodes};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  tracehead = trace.prev;
-  return ATTR_parser___State____nodes( self) /*State::_nodes*/;
-}
-void parser___State___nodes__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13, LOCATE_parser___State___nodes__eq};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  ATTR_parser___State____nodes( self) /*State::_nodes*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
-void parser___State___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16, LOCATE_parser___State___init};
-  val_t variable[4];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Local variable */
-  variable[2] =  param1;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_State].i]) return;
-  /* Register variable[3]: Method return value and escape marker */
-  ATTR_parser___State____state(variable[0]) /*State::_state*/ =  variable[1] /*state*/;
-  ATTR_parser___State____nodes(variable[0]) /*State::_nodes*/ =  variable[2] /*nodes*/;
-  return_label0: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_State].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___Parser___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 34, LOCATE_parser___Parser___init};
-  val_t variable[4];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Parser].i]) return;
-  /* Register variable[2]: Method return value and escape marker */
-  ATTR_parser___Parser____lexer(variable[0]) /*Parser::_lexer*/ =  variable[1] /*lexer*/;
-  /* Register variable[3]: Result */
-  variable[3] = NEW_Array_array___Array___init() /*new Array[State]*/;
-  ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/ = variable[3];
-  /* Register variable[3]: Result */
-  variable[3] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/ = variable[3];
-  CALL_parser_tables___ParserTable___build_goto_table(variable[0])(variable[0]) /*ParserTable::build_goto_table*/;
-  CALL_parser_tables___ParserTable___build_action_table(variable[0])(variable[0]) /*ParserTable::build_action_table*/;
-  CALL_parser___Parser___build_reduce_table(variable[0])(variable[0]) /*Parser::build_reduce_table*/;
-  return_label1: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_Parser].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-val_t parser___Parser___go_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 45, LOCATE_parser___Parser___go_to};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  /* Register variable[4]: Result */
-  variable[4] = CALL_parser___Parser___state(variable[0])(variable[0]) /*Parser::state*/;
-  variable[3] = variable[4];
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = ATTR_parser_tables___ParserTable____goto_table(variable[0]) /*ParserTable::_goto_table*/;
-  /* Register variable[6]: Local variable */
-  variable[6] = variable[5];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[1] /*index*/;
-  /* Register variable[8]: Method return value and escape marker */
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  /* Ensure var variable[9]: Left 'and' operand*/
-  if (UNTAG_Bool(variable[9])) { /* and */
-    /* Register variable[9]: Result */
-    variable[9] = ATTR_array___AbstractArrayRead____length(variable[6]) /*AbstractArrayRead::_length*/;
-    /* Register variable[9]: Result */
-    variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)<UNTAG_Int(variable[9]));
-  }
-  /* Register variable[9]: Result */
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = ATTR_array___Array____items(variable[6]) /*Array::_items*/;
-  /* Register variable[9]: Result */
-  variable[9] = UNBOX_NativeArray(variable[9])[UNTAG_Int( variable[7] /*index*/)];
-  variable[8] = variable[9];
-  goto return_label3;
-  return_label3: while(false);
-  /* Register variable[5]: Result */
-  variable[5] = variable[8];
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  TAG_Int(1);
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_abstract_collection___Collection___length( variable[4] /*table*/)( variable[4] /*table*/) /*AbstractArrayRead::length*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Int(UNTAG_Int(variable[7])/UNTAG_Int( TAG_Int(2)));
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Int(UNTAG_Int(variable[7])-UNTAG_Int( TAG_Int(1)));
-  variable[6] = variable[7];
-  while (true) { /*while*/
-    /* Register variable[7]: Result */
-    variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*low*/)<=UNTAG_Int( variable[6] /*high*/));
-    if (!UNTAG_Bool(variable[7])) break; /* while*/
-    /* Register variable[7]: Local variable */
-    /* Register variable[8]: Result */
-    variable[8] = TAG_Int(UNTAG_Int( variable[5] /*low*/)+UNTAG_Int( variable[6] /*high*/));
-    /* Register variable[8]: Result */
-    variable[8] = TAG_Int(UNTAG_Int(variable[8])/UNTAG_Int( TAG_Int(2)));
-    variable[7] = variable[8];
-    /* Register variable[8]: Local variable */
-    /* Register variable[9]: Result */
-    variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)*UNTAG_Int( TAG_Int(2)));
-    variable[8] = variable[9];
-    /* Register variable[9]: Local variable */
-    variable[9] =  variable[4] /*table*/;
-    /* Register variable[10]: Local variable */
-    variable[10] =  variable[8] /*subindex*/;
-    /* Register variable[11]: Method return value and escape marker */
-    /* Register variable[12]: Result */
-    variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[12]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[12])) { /* and */
-      /* Register variable[12]: Result */
-      variable[12] = ATTR_array___AbstractArrayRead____length(variable[9]) /*AbstractArrayRead::_length*/;
-      /* Register variable[12]: Result */
-      variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)<UNTAG_Int(variable[12]));
-    }
-    /* Register variable[12]: Result */
-    if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-    /* Register variable[12]: Result */
-    variable[12] = ATTR_array___Array____items(variable[9]) /*Array::_items*/;
-    /* Register variable[12]: Result */
-    variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)];
-    variable[11] = variable[12];
-    goto return_label5;
-    return_label5: while(false);
-    /* Register variable[9]: Result */
-    variable[9] = variable[11];
-    /* Register variable[9]: Result */
-    variable[9] = TAG_Bool(UNTAG_Int( variable[3] /*state*/)<UNTAG_Int(variable[9]));
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      /* Register variable[9]: Result */
-      variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)-UNTAG_Int( TAG_Int(1)));
-      variable[6] = variable[9] /*high=*/;
-    } else { /*if*/
-      /* Register variable[9]: Local variable */
-      variable[9] =  variable[4] /*table*/;
-      /* Register variable[10]: Local variable */
-      variable[10] =  variable[8] /*subindex*/;
-      /* Register variable[11]: Method return value and escape marker */
-      /* Register variable[12]: Result */
-      variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-      /* Ensure var variable[12]: Left 'and' operand*/
-      if (UNTAG_Bool(variable[12])) { /* and */
-        /* Register variable[12]: Result */
-        variable[12] = ATTR_array___AbstractArrayRead____length(variable[9]) /*AbstractArrayRead::_length*/;
-        /* Register variable[12]: Result */
-        variable[12] = TAG_Bool(UNTAG_Int( variable[10] /*index*/)<UNTAG_Int(variable[12]));
+static const char LOCATE_parser___State___state[] = "parser::State::state";
+val_t parser___State___state(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser___State___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:10 */
+  REGB0 = TAG_Bool(ATTR_parser___State____state(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_state", LOCATE_parser, 10);
+  }
+  REGB0 = ATTR_parser___State____state(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___State___state__eq[] = "parser::State::state=";
+void parser___State___state__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10;
+  fra.me.meth = LOCATE_parser___State___state__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:10 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___State___nodes[] = "parser::State::nodes";
+val_t parser___State___nodes(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13;
+  fra.me.meth = LOCATE_parser___State___nodes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:13 */
+  fra.me.REG[0] = ATTR_parser___State____nodes(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___State___nodes__eq[] = "parser::State::nodes=";
+void parser___State___nodes__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13;
+  fra.me.meth = LOCATE_parser___State___nodes__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___State___init[] = "parser::State::init";
+void parser___State___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___State].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16;
+  fra.me.meth = LOCATE_parser___State___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* parser/parser.nit:18 */
+  ATTR_parser___State____state(fra.me.REG[0]) = REGB0;
+  /* parser/parser.nit:19 */
+  ATTR_parser___State____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
+  return;
+}
+static const char LOCATE_parser___Parser___init[] = "parser::Parser::init";
+void parser___Parser___init(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___Parser].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 34;
+  fra.me.meth = LOCATE_parser___Parser___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:37 */
+  ATTR_parser___Parser____lexer(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:38 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___Parser____stack(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:39 */
+  REGB0 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:239 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  /* parser/parser.nit:39 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB0;
+  /* parser/parser.nit:40 */
+  CALL_parser___Parser___build_reduce_table(fra.me.REG[0])(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
+  return;
+}
+static const char LOCATE_parser___Parser___go_to[] = "parser::Parser::go_to";
+val_t parser___Parser___go_to(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t REGB5;
+  val_t REGB6;
+  val_t REGB7;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 43;
+  fra.me.meth = LOCATE_parser___Parser___go_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:46 */
+  REGB1 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+  /* parser/parser.nit:47 */
+  REGB2 = TAG_Int(1);
+  /* parser/parser.nit:48 */
+  REGB3 = TAG_Int(0);
+  REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+  REGB4 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:240 */
+  REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
+  /* parser/parser.nit:50 */
+  while(1) {
+    REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:234 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
+    /* parser/parser.nit:50 */
+    if (UNTAG_Bool(REGB3)) {
+      /* ../lib/standard/kernel.nit:238 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
+      /* parser/parser.nit:51 */
+      REGB5 = TAG_Int(2);
+      /* ../lib/standard/kernel.nit:242 */
+      REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
+      /* parser/parser.nit:52 */
+      REGB3 = TAG_Int(2);
+      /* ../lib/standard/kernel.nit:241 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
+      /* parser/parser.nit:52 */
+      REGB6 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:238 */
+      REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
+      /* parser/parser.nit:54 */
+      REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB6);
+      REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB7)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* Register variable[12]: Result */
-      if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-      /* Register variable[12]: Result */
-      variable[12] = ATTR_array___Array____items(variable[9]) /*Array::_items*/;
-      /* Register variable[12]: Result */
-      variable[12] = UNBOX_NativeArray(variable[12])[UNTAG_Int( variable[10] /*index*/)];
-      variable[11] = variable[12];
-      goto return_label6;
-      return_label6: while(false);
-      /* Register variable[9]: Result */
-      variable[9] = variable[11];
-      /* Register variable[9]: Result */
-      variable[9] = TAG_Bool(UNTAG_Int( variable[3] /*state*/)>UNTAG_Int(variable[9]));
-      if (UNTAG_Bool(variable[9])) { /*if*/
-        /* Register variable[9]: Result */
-        variable[9] = TAG_Int(UNTAG_Int( variable[7] /*middle*/)+UNTAG_Int( TAG_Int(1)));
-        variable[5] = variable[9] /*low=*/;
-      } else { /*if*/
-        /* Register variable[9]: Result */
-        variable[9] = TAG_Int(UNTAG_Int( variable[8] /*subindex*/)+UNTAG_Int( TAG_Int(1)));
-        /* Register variable[10]: Local variable */
-        variable[10] =  variable[4] /*table*/;
-        /* Register variable[11]: Local variable */
-        variable[11] = variable[9];
-        /* Register variable[12]: Method return value and escape marker */
-        /* Register variable[13]: Result */
-        variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        /* Ensure var variable[13]: Left 'and' operand*/
-        if (UNTAG_Bool(variable[13])) { /* and */
-          /* Register variable[13]: Result */
-          variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/;
-          /* Register variable[13]: Result */
-          variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[13]));
+      /* ../lib/standard/kernel.nit:235 */
+      REGB7 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
+      /* parser/parser.nit:55 */
+      if (UNTAG_Bool(REGB7)) {
+        /* parser/parser.nit:56 */
+        REGB7 = TAG_Int(1);
+        /* ../lib/standard/kernel.nit:240 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB7));
+        /* parser/parser.nit:56 */
+        REGB4 = REGB7;
+      } else {
+        REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB7)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:237 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
+        /* parser/parser.nit:57 */
+        if (UNTAG_Bool(REGB3)) {
+          /* parser/parser.nit:58 */
+          REGB3 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:238 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB3));
+          /* parser/parser.nit:58 */
+          REGB2 = REGB3;
+        } else {
+          /* parser/parser.nit:60 */
+          REGB3 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:238 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB3));
+          /* parser/parser.nit:60 */
+          REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+          goto label1;
         }
-        /* Register variable[13]: Result */
-        if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-        /* Register variable[13]: Result */
-        variable[13] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
-        /* Register variable[13]: Result */
-        variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
-        variable[12] = variable[13];
-        goto return_label7;
-        return_label7: while(false);
-        /* Register variable[9]: Result */
-        variable[9] = variable[12];
-        variable[2] = variable[9];
-        goto return_label2;
+      }
+    } else {
+      /* parser/parser.nit:50 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  /* parser/parser.nit:64 */
+  REGB2 = TAG_Int(2);
+  REGB2 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+  REGB3 = REGB2;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB3;
+}
+static const char LOCATE_parser___Parser___push[] = "parser::Parser::push";
+void parser___Parser___push(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 67;
+  fra.me.meth = LOCATE_parser___Parser___push;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* parser/parser.nit:70 */
+  REGB1 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 70);
+  }
+  REGB1 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  REGB2 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:238 */
+  REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+  /* parser/parser.nit:71 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB2;
+  /* parser/parser.nit:72 */
+  REGB1 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 72);
+  }
+  fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+  }
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+  REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB3)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:235 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+  /* parser/parser.nit:72 */
+  if (UNTAG_Bool(REGB1)) {
+    /* parser/parser.nit:73 */
+    REGB1 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 73);
+    }
+    fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB1 = TAG_Int(0);
+    REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:236 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
+    /* ../lib/standard/collection/array.nit:280 */
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+      }
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+      REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:235 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
+    } else {
+      /* ../lib/standard/collection/array.nit:280 */
+      REGB3 = TAG_Bool(0);
+      REGB1 = REGB3;
+    }
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+    }
+    /* ../lib/standard/collection/array.nit:281 */
+    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    }
+    /* ../lib/standard/collection/array.nit:718 */
+    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+    /* ../lib/standard/collection/array.nit:281 */
+    goto label1;
+    label1: while(0);
+    /* parser/parser.nit:74 */
+    CALL_parser___State___state__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    /* parser/parser.nit:75 */
+    CALL_parser___State___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  } else {
+    /* parser/parser.nit:77 */
+    REGB2 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 77);
+    }
+    fra.me.REG[0] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+    fra.me.REG[1] = NEW_State_parser___State___init(REGB0, fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___Parser___state[] = "parser::Parser::state";
+val_t parser___Parser___state(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_parser___Parser___state;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:84 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 84);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 84);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:280 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:236 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/collection/array.nit:280 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+  }
+  /* ../lib/standard/collection/array.nit:281 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:718 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ../lib/standard/collection/array.nit:281 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser.nit:84 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 84);
+  }
+  REGB0 = CALL_parser___State___state(fra.me.REG[1])(fra.me.REG[1]);
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_parser___Parser___pop[] = "parser::Parser::pop";
+val_t parser___Parser___pop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 87;
+  fra.me.meth = LOCATE_parser___Parser___pop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:90 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 90);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____stack(fra.me.REG[0]);
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 90);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  /* ../lib/standard/collection/array.nit:280 */
+  REGB1 = TAG_Int(0);
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:236 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ../lib/standard/collection/array.nit:280 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  } else {
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+  }
+  /* ../lib/standard/collection/array.nit:281 */
+  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+  }
+  /* ../lib/standard/collection/array.nit:718 */
+  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+  /* ../lib/standard/collection/array.nit:281 */
+  goto label1;
+  label1: while(0);
+  /* parser/parser.nit:90 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_parser, 90);
+  }
+  fra.me.REG[1] = CALL_parser___State___nodes(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:91 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 91);
+  }
+  REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
+  REGB1 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:240 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* parser/parser.nit:91 */
+  ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB1;
+  /* parser/parser.nit:92 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_parser___Parser___parse[] = "parser::Parser::parse";
+val_t parser___Parser___parse(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t REGB5;
+  val_t REGB6;
+  val_t REGB7;
+  val_t REGB8;
+  val_t REGB9;
+  val_t tmp;
+            static val_t once_value_4; /* Once value */
+            static val_t once_value_5; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 95;
+  fra.me.meth = LOCATE_parser___Parser___parse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:98 */
+  REGB0 = TAG_Int(0);
+  CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB0, NIT_NULL);
+  /* parser/parser.nit:100 */
+  REGB0 = TAG_Bool(ATTR_parser___Parser____lexer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_lexer", LOCATE_parser, 100);
+  }
+  fra.me.REG[1] = ATTR_parser___Parser____lexer(fra.me.REG[0]);
+  /* parser/parser.nit:101 */
+  while(1) {
+    /* parser/parser.nit:102 */
+    fra.me.REG[2] = CALL_parser___lexer___Lexer___peek(fra.me.REG[1])(fra.me.REG[1]);
+    /* parser/parser.nit:103 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AError, ID_parser___parser_nodes___AError)) /*cast AError*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:104 */
+      fra.me.REG[3] = NEW_Start_parser___parser_nodes___Start___init(NIT_NULL, fra.me.REG[2]);
+      goto label1;
+    }
+    /* parser/parser.nit:107 */
+    REGB0 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
+    /* parser/parser.nit:108 */
+    REGB1 = CALL_parser___lexer___Token___parser_index(fra.me.REG[2])(fra.me.REG[2]);
+    /* parser/parser.nit:109 */
+    REGB2 = TAG_Int(2);
+    REGB2 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
+    /* parser/parser.nit:110 */
+    REGB3 = TAG_Int(3);
+    REGB3 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
+    /* parser/parser.nit:112 */
+    REGB4 = TAG_Int(1);
+    /* parser/parser.nit:113 */
+    REGB5 = TAG_Int(0);
+    REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+    REGB6 = TAG_Int(1);
+    /* ../lib/standard/kernel.nit:240 */
+    REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
+    /* parser/parser.nit:115 */
+    while(1) {
+      REGB5 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB5)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:234 */
+      REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB6));
+      /* parser/parser.nit:115 */
+      if (UNTAG_Bool(REGB5)) {
+        /* ../lib/standard/kernel.nit:238 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
+        /* parser/parser.nit:116 */
+        REGB7 = TAG_Int(2);
+        /* ../lib/standard/kernel.nit:242 */
+        REGB7 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB7));
+        /* parser/parser.nit:117 */
+        REGB5 = TAG_Int(3);
+        /* ../lib/standard/kernel.nit:241 */
+        REGB5 = TAG_Int(UNTAG_Int(REGB7)*UNTAG_Int(REGB5));
+        /* parser/parser.nit:117 */
+        REGB8 = TAG_Int(1);
+        /* ../lib/standard/kernel.nit:238 */
+        REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
+        /* parser/parser.nit:119 */
+        REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB8);
+        REGB9 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB9)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:235 */
+        REGB9 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB5));
+        /* parser/parser.nit:120 */
+        if (UNTAG_Bool(REGB9)) {
+          /* parser/parser.nit:121 */
+          REGB9 = TAG_Int(1);
+          /* ../lib/standard/kernel.nit:240 */
+          REGB9 = TAG_Int(UNTAG_Int(REGB7)-UNTAG_Int(REGB9));
+          /* parser/parser.nit:121 */
+          REGB6 = REGB9;
+        } else {
+          REGB9 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB9)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:237 */
+          REGB5 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB5));
+          /* parser/parser.nit:122 */
+          if (UNTAG_Bool(REGB5)) {
+            /* parser/parser.nit:123 */
+            REGB5 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:123 */
+            REGB4 = REGB5;
+          } else {
+            /* parser/parser.nit:125 */
+            REGB5 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:125 */
+            REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+            REGB2 = REGB5;
+            /* parser/parser.nit:126 */
+            REGB5 = TAG_Int(2);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB5 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB5));
+            /* parser/parser.nit:126 */
+            REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB5);
+            REGB3 = REGB5;
+            /* parser/parser.nit:127 */
+            goto label2;
+          }
+        }
+      } else {
+        /* parser/parser.nit:115 */
+        goto label2;
       }
     }
-    continue_4: while(0);
-  }
-  break_4: while(0);
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*table*/;
-  /* Register variable[8]: Local variable */
-  variable[8] =  TAG_Int(1);
-  /* Register variable[9]: Method return value and escape marker */
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  /* Ensure var variable[10]: Left 'and' operand*/
-  if (UNTAG_Bool(variable[10])) { /* and */
-    /* Register variable[10]: Result */
-    variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
-    /* Register variable[10]: Result */
-    variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
-  }
-  /* Register variable[10]: Result */
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
-  /* Register variable[10]: Result */
-  variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
-  variable[9] = variable[10];
-  goto return_label8;
-  return_label8: while(false);
-  /* Register variable[7]: Result */
-  variable[7] = variable[9];
-  variable[2] = variable[7];
-  goto return_label2;
-  return_label2: while(false);
-  tracehead = trace.prev;
-  return variable[2];
-}
-void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, NULL, 69, LOCATE_parser___Parser___push};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Local variable */
-  variable[2] =  param1;
-  /* Register variable[3]: Method return value and escape marker */
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/;
-  /* Register variable[5]: Result */
-  variable[5] = TAG_Int(UNTAG_Int(variable[5])+UNTAG_Int( TAG_Int(1)));
-  variable[4] = variable[5];
-  ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/ =  variable[4] /*pos*/;
-  /* Register variable[5]: Result */
-  variable[5] = ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
-  /* Register variable[5]: Result */
-  variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*pos*/)<UNTAG_Int(variable[5]));
-  if (UNTAG_Bool(variable[5])) { /*if*/
-    /* Register variable[5]: Local variable */
-    /* Register variable[6]: Result */
-    variable[6] = ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/;
-    /* Register variable[7]: Local variable */
-    variable[7] = variable[6];
-    /* Register variable[8]: Local variable */
-    variable[8] =  variable[4] /*pos*/;
-    /* Register variable[9]: Method return value and escape marker */
-    /* Register variable[10]: Result */
-    variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[10]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[10])) { /* and */
-      /* Register variable[10]: Result */
-      variable[10] = ATTR_array___AbstractArrayRead____length(variable[7]) /*AbstractArrayRead::_length*/;
-      /* Register variable[10]: Result */
-      variable[10] = TAG_Bool(UNTAG_Int( variable[8] /*index*/)<UNTAG_Int(variable[10]));
-    }
-    /* Register variable[10]: Result */
-    if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-    /* Register variable[10]: Result */
-    variable[10] = ATTR_array___Array____items(variable[7]) /*Array::_items*/;
-    /* Register variable[10]: Result */
-    variable[10] = UNBOX_NativeArray(variable[10])[UNTAG_Int( variable[8] /*index*/)];
-    variable[9] = variable[10];
-    goto return_label10;
-    return_label10: while(false);
-    /* Register variable[6]: Result */
-    variable[6] = variable[9];
-    variable[5] = variable[6];
-    CALL_parser___State___state__eq( variable[5] /*state*/)( variable[5] /*state*/,  variable[1] /*numstate*/) /*State::state=*/;
-    CALL_parser___State___nodes__eq( variable[5] /*state*/)( variable[5] /*state*/,  variable[2] /*list_node*/) /*State::nodes=*/;
-  } else { /*if*/
-    /* Register variable[5]: Result */
-    variable[5] = ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/;
-    /* Register variable[6]: Result */
-    variable[6] = NEW_State_parser___State___init( variable[1] /*numstate*/,  variable[2] /*list_node*/) /*new State*/;
-    CALL_abstract_collection___IndexedCollection___push(variable[5])(variable[5], variable[6]) /*AbstractArray::push*/;
-  }
-  return_label9: while(false);
-  tracehead = trace.prev;
-  return;
-}
-val_t parser___Parser___state(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 83, LOCATE_parser___Parser___state};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/;
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/;
-  /* Register variable[4]: Local variable */
-  variable[4] = variable[2];
-  /* Register variable[5]: Local variable */
-  variable[5] = variable[3];
-  /* Register variable[6]: Method return value and escape marker */
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  /* Ensure var variable[7]: Left 'and' operand*/
-  if (UNTAG_Bool(variable[7])) { /* and */
-    /* Register variable[7]: Result */
-    variable[7] = ATTR_array___AbstractArrayRead____length(variable[4]) /*AbstractArrayRead::_length*/;
-    /* Register variable[7]: Result */
-    variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)<UNTAG_Int(variable[7]));
-  }
-  /* Register variable[7]: Result */
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = ATTR_array___Array____items(variable[4]) /*Array::_items*/;
-  /* Register variable[7]: Result */
-  variable[7] = UNBOX_NativeArray(variable[7])[UNTAG_Int( variable[5] /*index*/)];
-  variable[6] = variable[7];
-  goto return_label12;
-  return_label12: while(false);
-  /* Register variable[2]: Result */
-  variable[2] = variable[6];
-  /* Register variable[2]: Result */
-  variable[2] = CALL_parser___State___state(variable[2])(variable[2]) /*State::state*/;
-  variable[1] = variable[2];
-  goto return_label11;
-  return_label11: while(false);
-  tracehead = trace.prev;
-  return variable[1];
-}
-val_t parser___Parser___pop(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 89, LOCATE_parser___Parser___pop};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_parser___Parser____stack(variable[0]) /*Parser::_stack*/;
-  /* Register variable[4]: Result */
-  variable[4] = ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/;
-  /* Register variable[5]: Local variable */
-  variable[5] = variable[3];
-  /* Register variable[6]: Local variable */
-  variable[6] = variable[4];
-  /* Register variable[7]: Method return value and escape marker */
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(UNTAG_Int( variable[6] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  /* Ensure var variable[8]: Left 'and' operand*/
-  if (UNTAG_Bool(variable[8])) { /* and */
-    /* Register variable[8]: Result */
-    variable[8] = ATTR_array___AbstractArrayRead____length(variable[5]) /*AbstractArrayRead::_length*/;
-    /* Register variable[8]: Result */
-    variable[8] = TAG_Bool(UNTAG_Int( variable[6] /*index*/)<UNTAG_Int(variable[8]));
-  }
-  /* Register variable[8]: Result */
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = ATTR_array___Array____items(variable[5]) /*Array::_items*/;
-  /* Register variable[8]: Result */
-  variable[8] = UNBOX_NativeArray(variable[8])[UNTAG_Int( variable[6] /*index*/)];
-  variable[7] = variable[8];
-  goto return_label14;
-  return_label14: while(false);
-  /* Register variable[3]: Result */
-  variable[3] = variable[7];
-  /* Register variable[3]: Result */
-  variable[3] = CALL_parser___State___nodes(variable[3])(variable[3]) /*State::nodes*/;
-  variable[2] = variable[3];
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/;
-  /* Register variable[3]: Result */
-  variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1)));
-  ATTR_parser___Parser____stack_pos(variable[0]) /*Parser::_stack_pos*/ = variable[3];
-  variable[1] =  variable[2] /*res*/;
-  goto return_label13;
-  return_label13: while(false);
-  tracehead = trace.prev;
-  return variable[1];
-}
-val_t parser___Parser___parse(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 97, LOCATE_parser___Parser___parse};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  CALL_parser___Parser___push(variable[0])(variable[0],  TAG_Int(0),  NIT_NULL /*null*/) /*Parser::push*/;
-  /* Register variable[2]: Local variable */
-  variable[2] =  NIT_NULL /*null*/;
-  /* Register variable[3]: Local variable */
-  /* Register variable[4]: Result */
-  variable[4] = ATTR_parser___Parser____lexer(variable[0]) /*Parser::_lexer*/;
-  variable[3] = variable[4];
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    /* Register variable[4]: Local variable */
-    /* Register variable[5]: Result */
-    variable[5] = CALL_lexer___Lexer___peek( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::peek*/;
-    variable[4] = variable[5];
-    /* Register variable[5]: Local variable */
-    /* Register variable[6]: Result */
-    variable[6] = CALL_lexer___Token___pos( variable[4] /*token*/)( variable[4] /*token*/) /*Token::pos*/;
-    variable[5] = variable[6];
-    /* Register variable[6]: Local variable */
-    /* Register variable[7]: Result */
-    variable[7] = CALL_lexer___Token___line( variable[4] /*token*/)( variable[4] /*token*/) /*Token::line*/;
-    variable[6] = variable[7];
-    /* Register variable[7]: Result */
-    variable[7] = TAG_Bool(( variable[4] /*token*/==NIT_NULL) || VAL_ISA( variable[4] /*token*/, COLOR_PError, ID_PError)) /*cast PError*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      /* Register variable[7]: Result */
-      variable[7] = TAG_Bool(( variable[4] /*token*/==NIT_NULL) || VAL_ISA( variable[4] /*token*/, COLOR_PError, ID_PError)) /*cast PError*/;
-      if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 110); nit_exit(1);}
-      /* Register variable[7]: Result */
-      variable[7] = NEW_Start_parser_prod___Start___init( NIT_NULL /*null*/,  variable[4] /*token*/) /*new Start*/;
-      variable[1] = variable[7];
-      goto return_label15;
-    }
-    /* Register variable[7]: Local variable */
-    /* Register variable[8]: Result */
-    variable[8] = CALL_lexer___Token___parser_index( variable[4] /*token*/)( variable[4] /*token*/) /*Token::parser_index*/;
-    variable[7] = variable[8];
-    /* Register variable[8]: Local variable */
-    /* Register variable[9]: Result */
-    variable[9] = ATTR_parser_tables___ParserTable____action_table(variable[0]) /*ParserTable::_action_table*/;
-    /* Register variable[10]: Result */
-    variable[10] = CALL_parser___Parser___state(variable[0])(variable[0]) /*Parser::state*/;
-    /* Register variable[11]: Local variable */
-    variable[11] = variable[9];
-    /* Register variable[12]: Local variable */
-    variable[12] = variable[10];
-    /* Register variable[13]: Method return value and escape marker */
-    /* Register variable[14]: Result */
-    variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[14]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[14])) { /* and */
-      /* Register variable[14]: Result */
-      variable[14] = ATTR_array___AbstractArrayRead____length(variable[11]) /*AbstractArrayRead::_length*/;
-      /* Register variable[14]: Result */
-      variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)<UNTAG_Int(variable[14]));
-    }
-    /* Register variable[14]: Result */
-    if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-    /* Register variable[14]: Result */
-    variable[14] = ATTR_array___Array____items(variable[11]) /*Array::_items*/;
-    /* Register variable[14]: Result */
-    variable[14] = UNBOX_NativeArray(variable[14])[UNTAG_Int( variable[12] /*index*/)];
-    variable[13] = variable[14];
-    goto return_label17;
-    return_label17: while(false);
-    /* Register variable[9]: Result */
-    variable[9] = variable[13];
-    variable[8] = variable[9];
-    /* Register variable[9]: Local variable */
-    /* Register variable[10]: Local variable */
-    variable[10] =  variable[8] /*table*/;
-    /* Register variable[11]: Local variable */
-    variable[11] =  TAG_Int(1);
-    /* Register variable[12]: Method return value and escape marker */
-    /* Register variable[13]: Result */
-    variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[13]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[13])) { /* and */
-      /* Register variable[13]: Result */
-      variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/;
-      /* Register variable[13]: Result */
-      variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[13]));
-    }
-    /* Register variable[13]: Result */
-    if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-    /* Register variable[13]: Result */
-    variable[13] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
-    /* Register variable[13]: Result */
-    variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
-    variable[12] = variable[13];
-    goto return_label18;
-    return_label18: while(false);
-    /* Register variable[10]: Result */
-    variable[10] = variable[12];
-    variable[9] = variable[10];
-    /* Register variable[10]: Local variable */
-    /* Register variable[11]: Local variable */
-    variable[11] =  variable[8] /*table*/;
-    /* Register variable[12]: Local variable */
-    variable[12] =  TAG_Int(2);
-    /* Register variable[13]: Method return value and escape marker */
-    /* Register variable[14]: Result */
-    variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[14]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[14])) { /* and */
-      /* Register variable[14]: Result */
-      variable[14] = ATTR_array___AbstractArrayRead____length(variable[11]) /*AbstractArrayRead::_length*/;
-      /* Register variable[14]: Result */
-      variable[14] = TAG_Bool(UNTAG_Int( variable[12] /*index*/)<UNTAG_Int(variable[14]));
-    }
-    /* Register variable[14]: Result */
-    if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-    /* Register variable[14]: Result */
-    variable[14] = ATTR_array___Array____items(variable[11]) /*Array::_items*/;
-    /* Register variable[14]: Result */
-    variable[14] = UNBOX_NativeArray(variable[14])[UNTAG_Int( variable[12] /*index*/)];
-    variable[13] = variable[14];
-    goto return_label19;
-    return_label19: while(false);
-    /* Register variable[11]: Result */
-    variable[11] = variable[13];
-    variable[10] = variable[11];
-    /* Register variable[11]: Local variable */
-    variable[11] =  TAG_Int(1);
-    /* Register variable[12]: Local variable */
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___length( variable[8] /*table*/)( variable[8] /*table*/) /*AbstractArrayRead::length*/;
-    /* Register variable[13]: Result */
-    variable[13] = TAG_Int(UNTAG_Int(variable[13])/UNTAG_Int( TAG_Int(3)));
-    /* Register variable[13]: Result */
-    variable[13] = TAG_Int(UNTAG_Int(variable[13])-UNTAG_Int( TAG_Int(1)));
-    variable[12] = variable[13];
-    while (true) { /*while*/
-      /* Register variable[13]: Result */
-      variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*low*/)<=UNTAG_Int( variable[12] /*high*/));
-      if (!UNTAG_Bool(variable[13])) break; /* while*/
-      /* Register variable[13]: Local variable */
-      /* Register variable[14]: Result */
-      variable[14] = TAG_Int(UNTAG_Int( variable[11] /*low*/)+UNTAG_Int( variable[12] /*high*/));
-      /* Register variable[14]: Result */
-      variable[14] = TAG_Int(UNTAG_Int(variable[14])/UNTAG_Int( TAG_Int(2)));
-      variable[13] = variable[14];
-      /* Register variable[14]: Local variable */
-      /* Register variable[15]: Result */
-      variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)*UNTAG_Int( TAG_Int(3)));
-      variable[14] = variable[15];
-      /* Register variable[15]: Local variable */
-      variable[15] =  variable[8] /*table*/;
-      /* Register variable[16]: Local variable */
-      variable[16] =  variable[14] /*subindex*/;
-      /* Register variable[17]: Method return value and escape marker */
-      /* Register variable[18]: Result */
-      variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-      /* Ensure var variable[18]: Left 'and' operand*/
-      if (UNTAG_Bool(variable[18])) { /* and */
-        /* Register variable[18]: Result */
-        variable[18] = ATTR_array___AbstractArrayRead____length(variable[15]) /*AbstractArrayRead::_length*/;
-        /* Register variable[18]: Result */
-        variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)<UNTAG_Int(variable[18]));
+    label2: while(0);
+    /* parser/parser.nit:131 */
+    REGB0 = TAG_Int(0);
+    REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+    if (UNTAG_Bool(REGB4)) {
+    } else {
+      /* ../lib/standard/kernel.nit:230 */
+      REGB0 = TAG_Bool((REGB2)==(REGB0));
+      /* parser/parser.nit:131 */
+      REGB4 = REGB0;
+    }
+    if (UNTAG_Bool(REGB4)) {
+      /* parser/parser.nit:132 */
+      fra.me.REG[4] = CALL_parser___lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[4]);
+    } else {
+      /* parser/parser.nit:133 */
+      REGB4 = TAG_Int(1);
+      REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        /* ../lib/standard/kernel.nit:230 */
+        REGB4 = TAG_Bool((REGB2)==(REGB4));
+        /* parser/parser.nit:133 */
+        REGB0 = REGB4;
       }
-      /* Register variable[18]: Result */
-      if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-      /* Register variable[18]: Result */
-      variable[18] = ATTR_array___Array____items(variable[15]) /*Array::_items*/;
-      /* Register variable[18]: Result */
-      variable[18] = UNBOX_NativeArray(variable[18])[UNTAG_Int( variable[16] /*index*/)];
-      variable[17] = variable[18];
-      goto return_label21;
-      return_label21: while(false);
-      /* Register variable[15]: Result */
-      variable[15] = variable[17];
-      /* Register variable[15]: Result */
-      variable[15] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)<UNTAG_Int(variable[15]));
-      if (UNTAG_Bool(variable[15])) { /*if*/
-        /* Register variable[15]: Result */
-        variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)-UNTAG_Int( TAG_Int(1)));
-        variable[12] = variable[15] /*high=*/;
-      } else { /*if*/
-        /* Register variable[15]: Local variable */
-        variable[15] =  variable[8] /*table*/;
-        /* Register variable[16]: Local variable */
-        variable[16] =  variable[14] /*subindex*/;
-        /* Register variable[17]: Method return value and escape marker */
-        /* Register variable[18]: Result */
-        variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        /* Ensure var variable[18]: Left 'and' operand*/
-        if (UNTAG_Bool(variable[18])) { /* and */
-          /* Register variable[18]: Result */
-          variable[18] = ATTR_array___AbstractArrayRead____length(variable[15]) /*AbstractArrayRead::_length*/;
-          /* Register variable[18]: Result */
-          variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)<UNTAG_Int(variable[18]));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:134 */
+        REGB0 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 134);
+        }
+        fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB0 = TAG_Int(0);
+        REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* Register variable[18]: Result */
-        if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-        /* Register variable[18]: Result */
-        variable[18] = ATTR_array___Array____items(variable[15]) /*Array::_items*/;
-        /* Register variable[18]: Result */
-        variable[18] = UNBOX_NativeArray(variable[18])[UNTAG_Int( variable[16] /*index*/)];
-        variable[17] = variable[18];
-        goto return_label22;
-        return_label22: while(false);
-        /* Register variable[15]: Result */
-        variable[15] = variable[17];
-        /* Register variable[15]: Result */
-        variable[15] = TAG_Bool(UNTAG_Int( variable[7] /*index*/)>UNTAG_Int(variable[15]));
-        if (UNTAG_Bool(variable[15])) { /*if*/
-          /* Register variable[15]: Result */
-          variable[15] = TAG_Int(UNTAG_Int( variable[13] /*middle*/)+UNTAG_Int( TAG_Int(1)));
-          variable[11] = variable[15] /*low=*/;
-        } else { /*if*/
-          /* Register variable[15]: Result */
-          variable[15] = TAG_Int(UNTAG_Int( variable[14] /*subindex*/)+UNTAG_Int( TAG_Int(1)));
-          /* Register variable[16]: Local variable */
-          variable[16] =  variable[8] /*table*/;
-          /* Register variable[17]: Local variable */
-          variable[17] = variable[15];
-          /* Register variable[18]: Method return value and escape marker */
-          /* Register variable[19]: Result */
-          variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-          /* Ensure var variable[19]: Left 'and' operand*/
-          if (UNTAG_Bool(variable[19])) { /* and */
-            /* Register variable[19]: Result */
-            variable[19] = ATTR_array___AbstractArrayRead____length(variable[16]) /*AbstractArrayRead::_length*/;
-            /* Register variable[19]: Result */
-            variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)<UNTAG_Int(variable[19]));
+        /* ../lib/standard/kernel.nit:236 */
+        REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
+        /* ../lib/standard/collection/array.nit:280 */
+        if (UNTAG_Bool(REGB0)) {
+          REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
-          /* Register variable[19]: Result */
-          if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-          /* Register variable[19]: Result */
-          variable[19] = ATTR_array___Array____items(variable[16]) /*Array::_items*/;
-          /* Register variable[19]: Result */
-          variable[19] = UNBOX_NativeArray(variable[19])[UNTAG_Int( variable[17] /*index*/)];
-          variable[18] = variable[19];
-          goto return_label23;
-          return_label23: while(false);
-          /* Register variable[15]: Result */
-          variable[15] = variable[18];
-          variable[9] = variable[15] /*action_type=*/;
-          /* Register variable[15]: Result */
-          variable[15] = TAG_Int(UNTAG_Int( variable[14] /*subindex*/)+UNTAG_Int( TAG_Int(2)));
-          /* Register variable[16]: Local variable */
-          variable[16] =  variable[8] /*table*/;
-          /* Register variable[17]: Local variable */
-          variable[17] = variable[15];
-          /* Register variable[18]: Method return value and escape marker */
-          /* Register variable[19]: Result */
-          variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-          /* Ensure var variable[19]: Left 'and' operand*/
-          if (UNTAG_Bool(variable[19])) { /* and */
-            /* Register variable[19]: Result */
-            variable[19] = ATTR_array___AbstractArrayRead____length(variable[16]) /*AbstractArrayRead::_length*/;
-            /* Register variable[19]: Result */
-            variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)<UNTAG_Int(variable[19]));
+          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB4 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
+        } else {
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        }
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+        }
+        /* ../lib/standard/collection/array.nit:281 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        }
+        /* ../lib/standard/collection/array.nit:718 */
+        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
+        /* ../lib/standard/collection/array.nit:281 */
+        goto label3;
+        label3: while(0);
+        /* parser/parser.nit:134 */
+        REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 134);
+        }
+        CALL_parser___ReduceAction___action(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+      } else {
+        /* parser/parser.nit:135 */
+        REGB3 = TAG_Int(2);
+        REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          /* ../lib/standard/kernel.nit:230 */
+          REGB3 = TAG_Bool((REGB2)==(REGB3));
+          /* parser/parser.nit:135 */
+          REGB0 = REGB3;
+        }
+        if (UNTAG_Bool(REGB0)) {
+          /* parser/parser.nit:136 */
+          fra.me.REG[4] = CALL_parser___lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
+          /* parser/parser.nit:137 */
+          REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___EOF, ID_parser___parser_nodes___EOF)) /*cast EOF*/;
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 137);
+          }
+          /* parser/parser.nit:138 */
+          fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[0])(fra.me.REG[0]);
+          /* parser/parser.nit:139 */
+          REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Assert failed", NULL, LOCATE_parser, 139);
+          }
+          /* parser/parser.nit:140 */
+          fra.me.REG[4] = NEW_Start_parser___parser_nodes___Start___init(fra.me.REG[5], fra.me.REG[4]);
+          /* parser/parser.nit:141 */
+          fra.me.REG[5] = NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init();
+          CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+          /* parser/parser.nit:142 */
+          fra.me.REG[3] = fra.me.REG[4];
+          goto label1;
+        } else {
+          /* parser/parser.nit:143 */
+          REGB0 = TAG_Int(3);
+          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            /* ../lib/standard/kernel.nit:230 */
+            REGB0 = TAG_Bool((REGB2)==(REGB0));
+            /* parser/parser.nit:143 */
+            REGB3 = REGB0;
+          }
+          if (UNTAG_Bool(REGB3)) {
+            /* parser/parser.nit:144 */
+            REGB3 = TAG_Int(3);
+            fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
+            if (!once_value_4) {
+              fra.me.REG[5] = BOX_NativeString("Syntax error: unexpected ");
+              REGB3 = TAG_Int(25);
+              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              once_value_4 = fra.me.REG[5];
+              register_static_object(&once_value_4);
+            } else fra.me.REG[5] = once_value_4;
+            fra.me.REG[5] = fra.me.REG[5];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            if (!once_value_5) {
+              fra.me.REG[5] = BOX_NativeString(".");
+              REGB3 = TAG_Int(1);
+              fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB3);
+              once_value_5 = fra.me.REG[5];
+              register_static_object(&once_value_5);
+            } else fra.me.REG[5] = once_value_5;
+            fra.me.REG[5] = fra.me.REG[5];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+            fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
+            fra.me.REG[2] = NEW_AError_parser___lexer___AError___init_error(fra.me.REG[4], fra.me.REG[2]);
+            /* parser/parser.nit:145 */
+            fra.me.REG[2] = NEW_Start_parser___parser_nodes___Start___init(NIT_NULL, fra.me.REG[2]);
+            /* parser/parser.nit:146 */
+            fra.me.REG[3] = fra.me.REG[2];
+            goto label1;
           }
-          /* Register variable[19]: Result */
-          if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-          /* Register variable[19]: Result */
-          variable[19] = ATTR_array___Array____items(variable[16]) /*Array::_items*/;
-          /* Register variable[19]: Result */
-          variable[19] = UNBOX_NativeArray(variable[19])[UNTAG_Int( variable[17] /*index*/)];
-          variable[18] = variable[19];
-          goto return_label24;
-          return_label24: while(false);
-          /* Register variable[15]: Result */
-          variable[15] = variable[18];
-          variable[10] = variable[15] /*action_value=*/;
-          /* Register variable[15]: Result */
-          variable[15] = TAG_Int(UNTAG_Int( variable[11] /*low*/)-UNTAG_Int( TAG_Int(1)));
-          variable[12] = variable[15] /*high=*/;
         }
       }
-      continue_20: while(0);
     }
-    break_20: while(0);
-    /* Register variable[13]: Result */
-    variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(0)));
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      /* Register variable[13]: Result */
-      variable[13] = CALL_lexer___Lexer___next( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::next*/;
-      CALL_parser___Parser___push(variable[0])(variable[0],  variable[10] /*action_value*/, variable[13]) /*Parser::push*/;
-    } else { /*if*/
-      /* Register variable[13]: Result */
-      variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(1)));
-      if (UNTAG_Bool(variable[13])) { /*if*/
-        /* Register variable[13]: Result */
-        variable[13] = ATTR_parser___Parser____reduce_table(variable[0]) /*Parser::_reduce_table*/;
-        /* Register variable[14]: Local variable */
-        variable[14] = variable[13];
-        /* Register variable[15]: Local variable */
-        variable[15] =  variable[10] /*action_value*/;
-        /* Register variable[16]: Method return value and escape marker */
-        /* Register variable[17]: Result */
-        variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-        /* Ensure var variable[17]: Left 'and' operand*/
-        if (UNTAG_Bool(variable[17])) { /* and */
-          /* Register variable[17]: Result */
-          variable[17] = ATTR_array___AbstractArrayRead____length(variable[14]) /*AbstractArrayRead::_length*/;
-          /* Register variable[17]: Result */
-          variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)<UNTAG_Int(variable[17]));
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+static const char LOCATE_parser___Parser___build_reduce_table[] = "parser::Parser::build_reduce_table";
+void parser___Parser___build_reduce_table(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 152;
+  fra.me.meth = LOCATE_parser___Parser___build_reduce_table;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:154 */
+  REGB0 = TAG_Int(865);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  /* parser/parser.nit:155 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction0_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:156 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction1_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:157 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction2_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:158 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction3_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:159 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction4_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:160 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction5_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:161 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction6_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:162 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction7_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:163 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction8_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:164 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction9_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:165 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction10_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:166 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction11_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:167 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction12_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:168 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction13_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:169 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction14_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:170 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction15_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:171 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction16_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:172 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction17_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:173 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction18_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:174 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction19_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:175 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction20_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:176 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction21_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:177 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction22_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:178 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction23_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:179 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction24_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:180 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction25_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:181 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction26_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:182 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction27_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:183 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction28_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:184 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction29_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:185 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction30_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:186 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction31_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:187 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction32_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:188 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction33_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:189 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction34_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:190 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction35_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:191 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:192 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:193 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction38_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:194 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction39_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:195 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction40_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:196 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction41_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:197 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction42_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:198 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction43_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:199 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction44_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:200 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction45_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:201 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction46_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:202 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction47_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:203 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction48_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:204 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction49_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:205 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction50_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:206 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction51_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:207 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction52_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:208 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction53_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:209 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction54_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:210 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction55_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:211 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction56_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:212 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction57_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:213 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction58_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:214 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction59_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:215 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction60_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:216 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction61_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:217 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction62_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:218 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_ReduceAction63_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:219 */
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_ReduceAction64_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:220 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction65_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:221 */
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:222 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:223 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:224 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:225 */
+  REGB0 = TAG_Int(4);
+  fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:226 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:227 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction72_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:228 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction73_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:229 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction74_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:230 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction75_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:231 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction76_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:232 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:233 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:234 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:235 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:236 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction81_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:237 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction82_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:238 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction83_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:239 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction84_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:240 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction85_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:241 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction86_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:242 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction87_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:243 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction88_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:244 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction89_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:245 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction90_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:246 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction91_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:247 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction92_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:248 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction93_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:249 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction94_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:250 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction95_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:251 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction96_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:252 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction97_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:253 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction98_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:254 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction99_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:255 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction100_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:256 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction101_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:257 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_ReduceAction102_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:258 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction103_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:259 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction104_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:260 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction105_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:261 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction106_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:262 */
+  REGB0 = TAG_Int(6);
+  fra.me.REG[2] = NEW_ReduceAction107_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:263 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction108_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:264 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[2] = NEW_ReduceAction109_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:265 */
+  REGB0 = TAG_Int(8);
+  fra.me.REG[2] = NEW_ReduceAction110_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:266 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction111_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:267 */
+  REGB0 = TAG_Int(9);
+  fra.me.REG[2] = NEW_ReduceAction112_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:268 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction113_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:269 */
+  REGB0 = TAG_Int(10);
+  fra.me.REG[2] = NEW_ReduceAction114_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:270 */
+  REGB0 = TAG_Int(11);
+  fra.me.REG[2] = NEW_ReduceAction115_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:271 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction116_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:272 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction117_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:273 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction118_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:274 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction119_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:275 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction120_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:276 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction121_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:277 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction122_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:278 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction123_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:279 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction124_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:280 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction125_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:281 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction126_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:282 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction127_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:283 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction128_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:284 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction129_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:285 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction130_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:286 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction131_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:287 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction132_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:288 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction133_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:289 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction134_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:290 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction135_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:291 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction136_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:292 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction137_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:293 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction138_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:294 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction139_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:295 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction140_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:296 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction141_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:297 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction142_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:298 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction143_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:299 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction144_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:300 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction145_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:301 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction146_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:302 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction147_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:303 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction148_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:304 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction149_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:305 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction150_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:306 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction151_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:307 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction152_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:308 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction153_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:309 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction154_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:310 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction155_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:311 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction156_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:312 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction157_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:313 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction158_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:314 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction159_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:315 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction160_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:316 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction161_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:317 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction162_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:318 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction163_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:319 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction164_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:320 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction165_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:321 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction166_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:322 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:323 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:324 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:325 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:326 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction171_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:327 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction172_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:328 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction173_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:329 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction174_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:330 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction175_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:331 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction176_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:332 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction177_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:333 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction178_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:334 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction179_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:335 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction180_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:336 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:337 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction182_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:338 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction183_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:339 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction184_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:340 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction185_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:341 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction186_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:342 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction187_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:343 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction188_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:344 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction189_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:345 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction190_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:346 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction191_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:347 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction192_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:348 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction193_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:349 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:350 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:351 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction196_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:352 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction197_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:353 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:354 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction199_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:355 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:356 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction201_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:357 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:358 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:359 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:360 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:361 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction206_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:362 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction207_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:363 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction208_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:364 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction209_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:365 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:366 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction211_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:367 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction212_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:368 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:369 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:370 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:371 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:372 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:373 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:374 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:375 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:376 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:377 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:378 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:379 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction224_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:380 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction225_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:381 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction226_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:382 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction227_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:383 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction228_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:384 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction229_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:385 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:386 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:387 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:388 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:389 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:390 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:391 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:392 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:393 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction238_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:394 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:395 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:396 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:397 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:398 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:399 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:400 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:401 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:402 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction247_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:403 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction248_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:404 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction249_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:405 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction250_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:406 */
+  REGB0 = TAG_Int(12);
+  fra.me.REG[2] = NEW_ReduceAction251_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:407 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction252_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:408 */
+  REGB0 = TAG_Int(13);
+  fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:409 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:410 */
+  REGB0 = TAG_Int(14);
+  fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:411 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:412 */
+  REGB0 = TAG_Int(15);
+  fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:413 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:414 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:415 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:416 */
+  REGB0 = TAG_Int(16);
+  fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:417 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:418 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:419 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:420 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:421 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:422 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:423 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction268_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:424 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction269_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:425 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:426 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:427 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:428 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction273_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:429 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction274_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:430 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction275_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:431 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction276_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:432 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction277_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:433 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction278_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:434 */
+  REGB0 = TAG_Int(17);
+  fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:435 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:436 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:437 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:438 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:439 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:440 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:441 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:442 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction287_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:443 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction288_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:444 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction289_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:445 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction290_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:446 */
+  REGB0 = TAG_Int(18);
+  fra.me.REG[2] = NEW_ReduceAction291_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:447 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction292_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:448 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:449 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction294_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:450 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:451 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction296_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:452 */
+  REGB0 = TAG_Int(19);
+  fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:453 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:454 */
+  REGB0 = TAG_Int(20);
+  fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:455 */
+  REGB0 = TAG_Int(21);
+  fra.me.REG[2] = NEW_ReduceAction300_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:456 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:457 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction302_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:458 */
+  REGB0 = TAG_Int(22);
+  fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:459 */
+  REGB0 = TAG_Int(23);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:460 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:461 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:462 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:463 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:464 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:465 */
+  REGB0 = TAG_Int(24);
+  fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:466 */
+  REGB0 = TAG_Int(25);
+  fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:467 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:468 */
+  REGB0 = TAG_Int(26);
+  fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:469 */
+  REGB0 = TAG_Int(27);
+  fra.me.REG[2] = NEW_ReduceAction314_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:470 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:471 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:472 */
+  REGB0 = TAG_Int(28);
+  fra.me.REG[2] = NEW_ReduceAction317_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:473 */
+  REGB0 = TAG_Int(29);
+  fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:474 */
+  REGB0 = TAG_Int(29);
+  fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:475 */
+  REGB0 = TAG_Int(29);
+  fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:476 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction321_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:477 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:478 */
+  REGB0 = TAG_Int(30);
+  fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:479 */
+  REGB0 = TAG_Int(31);
+  fra.me.REG[2] = NEW_ReduceAction324_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:480 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:481 */
+  REGB0 = TAG_Int(32);
+  fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:482 */
+  REGB0 = TAG_Int(33);
+  fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:483 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:484 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:485 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction330_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:486 */
+  REGB0 = TAG_Int(34);
+  fra.me.REG[2] = NEW_ReduceAction331_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:487 */
+  REGB0 = TAG_Int(35);
+  fra.me.REG[2] = NEW_ReduceAction332_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:488 */
+  REGB0 = TAG_Int(35);
+  fra.me.REG[2] = NEW_ReduceAction333_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:489 */
+  REGB0 = TAG_Int(36);
+  fra.me.REG[2] = NEW_ReduceAction334_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:490 */
+  REGB0 = TAG_Int(37);
+  fra.me.REG[2] = NEW_ReduceAction334_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:491 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:492 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:493 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:494 */
+  REGB0 = TAG_Int(38);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:495 */
+  REGB0 = TAG_Int(39);
+  fra.me.REG[2] = NEW_ReduceAction340_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:496 */
+  REGB0 = TAG_Int(39);
+  fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:497 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:498 */
+  REGB0 = TAG_Int(40);
+  fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:499 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:500 */
+  REGB0 = TAG_Int(41);
+  fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:501 */
+  REGB0 = TAG_Int(42);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:502 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:503 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:504 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction349_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:505 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction350_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:506 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:507 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:508 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:509 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:510 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:511 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:512 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction357_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:513 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction358_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:514 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction359_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:515 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:516 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:517 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:518 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:519 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:520 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:521 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:522 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:523 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:524 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:525 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:526 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:527 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:528 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:529 */
+  REGB0 = TAG_Int(43);
+  fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:530 */
+  REGB0 = TAG_Int(44);
+  fra.me.REG[2] = NEW_ReduceAction375_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:531 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction376_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:532 */
+  REGB0 = TAG_Int(45);
+  fra.me.REG[2] = NEW_ReduceAction377_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:533 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction378_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:534 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction379_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:535 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:536 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:537 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction382_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:538 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction383_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:539 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction384_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:540 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction385_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:541 */
+  REGB0 = TAG_Int(46);
+  fra.me.REG[2] = NEW_ReduceAction386_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:542 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction387_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:543 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction388_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:544 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction389_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:545 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction390_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:546 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction391_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:547 */
+  REGB0 = TAG_Int(47);
+  fra.me.REG[2] = NEW_ReduceAction392_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:548 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction393_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:549 */
+  REGB0 = TAG_Int(48);
+  fra.me.REG[2] = NEW_ReduceAction394_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:550 */
+  REGB0 = TAG_Int(49);
+  fra.me.REG[2] = NEW_ReduceAction395_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:551 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction396_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:552 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction397_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:553 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction398_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:554 */
+  REGB0 = TAG_Int(50);
+  fra.me.REG[2] = NEW_ReduceAction399_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:555 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction400_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:556 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction401_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:557 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction402_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:558 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction403_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:559 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:560 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:561 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:562 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:563 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction408_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:564 */
+  REGB0 = TAG_Int(51);
+  fra.me.REG[2] = NEW_ReduceAction409_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:565 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction410_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:566 */
+  REGB0 = TAG_Int(52);
+  fra.me.REG[2] = NEW_ReduceAction411_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:567 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction412_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:568 */
+  REGB0 = TAG_Int(53);
+  fra.me.REG[2] = NEW_ReduceAction413_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:569 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction414_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:570 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction415_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:571 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction416_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:572 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction417_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:573 */
+  REGB0 = TAG_Int(54);
+  fra.me.REG[2] = NEW_ReduceAction418_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:574 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:575 */
+  REGB0 = TAG_Int(55);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:576 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction421_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:577 */
+  REGB0 = TAG_Int(56);
+  fra.me.REG[2] = NEW_ReduceAction422_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:578 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction423_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:579 */
+  REGB0 = TAG_Int(57);
+  fra.me.REG[2] = NEW_ReduceAction424_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:580 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction425_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:581 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction426_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:582 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction427_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:583 */
+  REGB0 = TAG_Int(58);
+  fra.me.REG[2] = NEW_ReduceAction428_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:584 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:585 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:586 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction431_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:587 */
+  REGB0 = TAG_Int(59);
+  fra.me.REG[2] = NEW_ReduceAction432_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:588 */
+  REGB0 = TAG_Int(60);
+  fra.me.REG[2] = NEW_ReduceAction433_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:589 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:590 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:591 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:592 */
+  REGB0 = TAG_Int(61);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:593 */
+  REGB0 = TAG_Int(62);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:594 */
+  REGB0 = TAG_Int(62);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:595 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:596 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction441_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:597 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction442_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:598 */
+  REGB0 = TAG_Int(63);
+  fra.me.REG[2] = NEW_ReduceAction443_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:599 */
+  REGB0 = TAG_Int(64);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:600 */
+  REGB0 = TAG_Int(64);
+  fra.me.REG[2] = NEW_ReduceAction445_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:601 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:602 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:603 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:604 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:605 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:606 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:607 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:608 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:609 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:610 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction455_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:611 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:612 */
+  REGB0 = TAG_Int(65);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:613 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:614 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:615 */
+  REGB0 = TAG_Int(66);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:616 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:617 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:618 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:619 */
+  REGB0 = TAG_Int(67);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:620 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:621 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:622 */
+  REGB0 = TAG_Int(68);
+  fra.me.REG[2] = NEW_ReduceAction467_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:623 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:624 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction469_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:625 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction470_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:626 */
+  REGB0 = TAG_Int(69);
+  fra.me.REG[2] = NEW_ReduceAction471_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:627 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction472_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:628 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction473_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:629 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:630 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:631 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:632 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:633 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:634 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:635 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction480_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:636 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:637 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction482_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:638 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction483_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:639 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction484_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:640 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:641 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:642 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:643 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:644 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:645 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:646 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:647 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:648 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:649 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction494_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:650 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction495_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:651 */
+  REGB0 = TAG_Int(70);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:652 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction497_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:653 */
+  REGB0 = TAG_Int(71);
+  fra.me.REG[2] = NEW_ReduceAction498_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:654 */
+  REGB0 = TAG_Int(72);
+  fra.me.REG[2] = NEW_ReduceAction499_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:655 */
+  REGB0 = TAG_Int(73);
+  fra.me.REG[2] = NEW_ReduceAction500_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:656 */
+  REGB0 = TAG_Int(74);
+  fra.me.REG[2] = NEW_ReduceAction499_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:657 */
+  REGB0 = TAG_Int(75);
+  fra.me.REG[2] = NEW_ReduceAction502_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:658 */
+  REGB0 = TAG_Int(76);
+  fra.me.REG[2] = NEW_ReduceAction503_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:659 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction504_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:660 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction505_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:661 */
+  REGB0 = TAG_Int(77);
+  fra.me.REG[2] = NEW_ReduceAction506_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:662 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction504_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:663 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction508_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:664 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction505_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:665 */
+  REGB0 = TAG_Int(78);
+  fra.me.REG[2] = NEW_ReduceAction506_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:666 */
+  REGB0 = TAG_Int(79);
+  fra.me.REG[2] = NEW_ReduceAction511_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:667 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction512_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:668 */
+  REGB0 = TAG_Int(80);
+  fra.me.REG[2] = NEW_ReduceAction513_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:669 */
+  REGB0 = TAG_Int(81);
+  fra.me.REG[2] = NEW_ReduceAction514_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:670 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction515_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:671 */
+  REGB0 = TAG_Int(82);
+  fra.me.REG[2] = NEW_ReduceAction516_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:672 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction517_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:673 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction518_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:674 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction519_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:675 */
+  REGB0 = TAG_Int(83);
+  fra.me.REG[2] = NEW_ReduceAction520_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:676 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction521_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:677 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction522_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:678 */
+  REGB0 = TAG_Int(84);
+  fra.me.REG[2] = NEW_ReduceAction523_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:679 */
+  REGB0 = TAG_Int(85);
+  fra.me.REG[2] = NEW_ReduceAction524_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:680 */
+  REGB0 = TAG_Int(86);
+  fra.me.REG[2] = NEW_ReduceAction525_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:681 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:682 */
+  REGB0 = TAG_Int(87);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:683 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction528_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:684 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction529_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:685 */
+  REGB0 = TAG_Int(88);
+  fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:686 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction531_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:687 */
+  REGB0 = TAG_Int(89);
+  fra.me.REG[2] = NEW_ReduceAction532_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:688 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction533_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:689 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction534_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:690 */
+  REGB0 = TAG_Int(90);
+  fra.me.REG[2] = NEW_ReduceAction526_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:691 */
+  REGB0 = TAG_Int(91);
+  fra.me.REG[2] = NEW_ReduceAction115_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:692 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction116_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:693 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction117_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:694 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction118_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:695 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction119_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:696 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction120_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:697 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction121_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:698 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction126_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:699 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction127_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:700 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction128_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:701 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction129_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:702 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction130_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:703 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction131_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:704 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction132_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:705 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction133_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:706 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction134_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:707 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction135_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:708 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction136_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:709 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction137_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:710 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction138_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:711 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction139_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:712 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction140_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:713 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction141_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:714 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction142_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:715 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction143_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:716 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction144_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:717 */
+  REGB0 = TAG_Int(92);
+  fra.me.REG[2] = NEW_ReduceAction145_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:718 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:719 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:720 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:721 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:722 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction288_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:723 */
+  REGB0 = TAG_Int(93);
+  fra.me.REG[2] = NEW_ReduceAction289_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:724 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:725 */
+  REGB0 = TAG_Int(94);
+  fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:726 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:727 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:728 */
+  REGB0 = TAG_Int(95);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:729 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:730 */
+  REGB0 = TAG_Int(96);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:731 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:732 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction441_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:733 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction442_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:734 */
+  REGB0 = TAG_Int(97);
+  fra.me.REG[2] = NEW_ReduceAction443_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:735 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:736 */
+  REGB0 = TAG_Int(98);
+  fra.me.REG[2] = NEW_ReduceAction445_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:737 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:738 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:739 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:740 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:741 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:742 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:743 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:744 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:745 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:746 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction455_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:747 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:748 */
+  REGB0 = TAG_Int(99);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:749 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:750 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:751 */
+  REGB0 = TAG_Int(100);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:752 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:753 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:754 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:755 */
+  REGB0 = TAG_Int(101);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:756 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:757 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:758 */
+  REGB0 = TAG_Int(102);
+  fra.me.REG[2] = NEW_ReduceAction467_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:759 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:760 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction469_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:761 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction470_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:762 */
+  REGB0 = TAG_Int(103);
+  fra.me.REG[2] = NEW_ReduceAction471_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:763 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction472_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:764 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction473_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:765 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:766 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:767 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:768 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:769 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:770 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:771 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:772 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:773 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:774 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:775 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:776 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:777 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:778 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:779 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:780 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:781 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction494_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:782 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction495_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:783 */
+  REGB0 = TAG_Int(104);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:784 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:785 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:786 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:787 */
+  REGB0 = TAG_Int(105);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:788 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:789 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:790 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction349_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:791 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction350_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:792 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:793 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:794 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:795 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:796 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:797 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:798 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction357_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:799 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction358_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:800 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction359_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:801 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:802 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:803 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:804 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:805 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:806 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:807 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:808 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:809 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:810 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:811 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:812 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:813 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:814 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:815 */
+  REGB0 = TAG_Int(106);
+  fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:816 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction376_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:817 */
+  REGB0 = TAG_Int(107);
+  fra.me.REG[2] = NEW_ReduceAction377_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:818 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction378_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:819 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction379_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:820 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:821 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:822 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction382_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:823 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction383_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:824 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction384_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:825 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction385_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:826 */
+  REGB0 = TAG_Int(108);
+  fra.me.REG[2] = NEW_ReduceAction386_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:827 */
+  REGB0 = TAG_Int(109);
+  fra.me.REG[2] = NEW_ReduceAction395_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:828 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction396_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:829 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction397_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:830 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction398_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:831 */
+  REGB0 = TAG_Int(110);
+  fra.me.REG[2] = NEW_ReduceAction399_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:832 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction400_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:833 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction401_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:834 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction402_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:835 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction403_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:836 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction404_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:837 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction405_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:838 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction406_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:839 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction407_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:840 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction408_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:841 */
+  REGB0 = TAG_Int(111);
+  fra.me.REG[2] = NEW_ReduceAction409_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:842 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction412_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:843 */
+  REGB0 = TAG_Int(112);
+  fra.me.REG[2] = NEW_ReduceAction413_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:844 */
+  REGB0 = TAG_Int(113);
+  fra.me.REG[2] = NEW_ReduceAction414_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:845 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction421_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:846 */
+  REGB0 = TAG_Int(114);
+  fra.me.REG[2] = NEW_ReduceAction422_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:847 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction423_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:848 */
+  REGB0 = TAG_Int(115);
+  fra.me.REG[2] = NEW_ReduceAction424_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:849 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction425_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:850 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction426_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:851 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction427_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:852 */
+  REGB0 = TAG_Int(116);
+  fra.me.REG[2] = NEW_ReduceAction428_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:853 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction429_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:854 */
+  REGB0 = TAG_Int(117);
+  fra.me.REG[2] = NEW_ReduceAction430_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:855 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:856 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:857 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:858 */
+  REGB0 = TAG_Int(118);
+  fra.me.REG[2] = NEW_ReduceAction437_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:859 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:860 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:861 */
+  REGB0 = TAG_Int(119);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:862 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:863 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:864 */
+  REGB0 = TAG_Int(120);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:865 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:866 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:867 */
+  REGB0 = TAG_Int(121);
+  fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:868 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:869 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:870 */
+  REGB0 = TAG_Int(122);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:871 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:872 */
+  REGB0 = TAG_Int(123);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:873 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:874 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction441_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:875 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction442_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:876 */
+  REGB0 = TAG_Int(124);
+  fra.me.REG[2] = NEW_ReduceAction443_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:877 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:878 */
+  REGB0 = TAG_Int(125);
+  fra.me.REG[2] = NEW_ReduceAction445_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:879 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:880 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:881 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:882 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:883 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:884 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:885 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:886 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:887 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:888 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction455_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:889 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:890 */
+  REGB0 = TAG_Int(126);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:891 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:892 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:893 */
+  REGB0 = TAG_Int(127);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:894 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:895 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:896 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:897 */
+  REGB0 = TAG_Int(128);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:898 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:899 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:900 */
+  REGB0 = TAG_Int(129);
+  fra.me.REG[2] = NEW_ReduceAction467_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:901 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:902 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction469_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:903 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction470_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:904 */
+  REGB0 = TAG_Int(130);
+  fra.me.REG[2] = NEW_ReduceAction471_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:905 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction472_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:906 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction473_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:907 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:908 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction367_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:909 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:910 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:911 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:912 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:913 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction480_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:914 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:915 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:916 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:917 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:918 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:919 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:920 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:921 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:922 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:923 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:924 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction495_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:925 */
+  REGB0 = TAG_Int(131);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:926 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:927 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:928 */
+  REGB0 = TAG_Int(132);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:929 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:930 */
+  REGB0 = TAG_Int(133);
+  fra.me.REG[2] = NEW_ReduceAction439_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:931 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:932 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction441_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:933 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction442_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:934 */
+  REGB0 = TAG_Int(134);
+  fra.me.REG[2] = NEW_ReduceAction443_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:935 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:936 */
+  REGB0 = TAG_Int(135);
+  fra.me.REG[2] = NEW_ReduceAction445_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:937 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:938 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction447_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:939 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction448_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:940 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction449_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:941 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction450_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:942 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction451_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:943 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction452_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:944 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction453_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:945 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction454_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:946 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction455_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:947 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction456_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:948 */
+  REGB0 = TAG_Int(136);
+  fra.me.REG[2] = NEW_ReduceAction457_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:949 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:950 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction459_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:951 */
+  REGB0 = TAG_Int(137);
+  fra.me.REG[2] = NEW_ReduceAction460_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:952 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:953 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction462_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:954 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction463_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:955 */
+  REGB0 = TAG_Int(138);
+  fra.me.REG[2] = NEW_ReduceAction464_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:956 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:957 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction466_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:958 */
+  REGB0 = TAG_Int(139);
+  fra.me.REG[2] = NEW_ReduceAction467_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:959 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:960 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction469_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:961 */
+  REGB0 = TAG_Int(140);
+  fra.me.REG[2] = NEW_ReduceAction806_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:962 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction807_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:963 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction808_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:964 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction370_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:965 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:966 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction811_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:967 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction481_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:968 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction485_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:969 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction486_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:970 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction487_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:971 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction488_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:972 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction489_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:973 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction490_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:974 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction491_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:975 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction492_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:976 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:977 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction495_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:978 */
+  REGB0 = TAG_Int(141);
+  fra.me.REG[2] = NEW_ReduceAction496_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:979 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction824_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:980 */
+  REGB0 = TAG_Int(142);
+  fra.me.REG[2] = NEW_ReduceAction825_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:981 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:982 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:983 */
+  REGB0 = TAG_Int(143);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:984 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:985 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction368_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:986 */
+  REGB0 = TAG_Int(144);
+  fra.me.REG[2] = NEW_ReduceAction369_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:987 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction832_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:988 */
+  REGB0 = TAG_Int(145);
+  fra.me.REG[2] = NEW_ReduceAction833_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:989 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction834_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:990 */
+  REGB0 = TAG_Int(146);
+  fra.me.REG[2] = NEW_ReduceAction835_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:991 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction836_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:992 */
+  REGB0 = TAG_Int(147);
+  fra.me.REG[2] = NEW_ReduceAction837_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:993 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction838_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:994 */
+  REGB0 = TAG_Int(148);
+  fra.me.REG[2] = NEW_ReduceAction839_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:995 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction840_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:996 */
+  REGB0 = TAG_Int(149);
+  fra.me.REG[2] = NEW_ReduceAction841_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:997 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction838_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:998 */
+  REGB0 = TAG_Int(150);
+  fra.me.REG[2] = NEW_ReduceAction839_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:999 */
+  REGB0 = TAG_Int(151);
+  fra.me.REG[2] = NEW_ReduceAction844_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1000 */
+  REGB0 = TAG_Int(151);
+  fra.me.REG[2] = NEW_ReduceAction845_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1001 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction846_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1002 */
+  REGB0 = TAG_Int(152);
+  fra.me.REG[2] = NEW_ReduceAction847_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1003 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction848_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1004 */
+  REGB0 = TAG_Int(153);
+  fra.me.REG[2] = NEW_ReduceAction849_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1005 */
+  REGB0 = TAG_Int(154);
+  fra.me.REG[2] = NEW_ReduceAction850_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1006 */
+  REGB0 = TAG_Int(154);
+  fra.me.REG[2] = NEW_ReduceAction851_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1007 */
+  REGB0 = TAG_Int(155);
+  fra.me.REG[2] = NEW_ReduceAction332_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1008 */
+  REGB0 = TAG_Int(155);
+  fra.me.REG[2] = NEW_ReduceAction853_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1009 */
+  REGB0 = TAG_Int(156);
+  fra.me.REG[2] = NEW_ReduceAction854_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1010 */
+  REGB0 = TAG_Int(156);
+  fra.me.REG[2] = NEW_ReduceAction855_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1011 */
+  REGB0 = TAG_Int(157);
+  fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1012 */
+  REGB0 = TAG_Int(157);
+  fra.me.REG[2] = NEW_ReduceAction857_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1013 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction854_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1014 */
+  REGB0 = TAG_Int(158);
+  fra.me.REG[2] = NEW_ReduceAction855_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1015 */
+  REGB0 = TAG_Int(159);
+  fra.me.REG[2] = NEW_ReduceAction515_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1016 */
+  REGB0 = TAG_Int(159);
+  fra.me.REG[2] = NEW_ReduceAction861_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1017 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction862_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1018 */
+  REGB0 = TAG_Int(160);
+  fra.me.REG[2] = NEW_ReduceAction863_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1019 */
+  REGB0 = TAG_Int(161);
+  fra.me.REG[2] = NEW_ReduceAction864_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1020 */
+  REGB0 = TAG_Int(161);
+  fra.me.REG[2] = NEW_ReduceAction865_parser___ReduceAction___init(REGB0);
+  /* parser/parser.nit:154 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[1]);
+  ATTR_parser___Parser____reduce_table(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ComputeProdLocationVisitor___visit[] = "parser::ComputeProdLocationVisitor::(parser_prod::Visitor::visit)";
+void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1051;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___visit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1053 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1054 */
+    goto label1;
+  } else {
+    /* parser/parser.nit:1055 */
+    REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
+    if (UNTAG_Bool(REGB0)) {
+      /* parser/parser.nit:1056 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1056);
+      }
+      fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
+      /* parser/parser.nit:1057 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      /* parser/parser.nit:1060 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1060);
+      }
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1061 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1061);
+        }
+        fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:269 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        }
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:272 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+          /* ../lib/standard/collection/array.nit:272 */
+          if (UNTAG_Bool(REGB1)) {
+            /* ../lib/standard/collection/array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            }
+            /* ../lib/standard/collection/array.nit:718 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+            /* parser/parser.nit:1062 */
+            ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB1 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB0 = REGB1;
+          } else {
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label2;
+          }
+        }
+        label2: while(0);
+        /* parser/parser.nit:1064 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1064);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+      }
+      /* parser/parser.nit:1068 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1068);
+      }
+      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1069 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1069);
         }
-        /* Register variable[17]: Result */
-        if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-        /* Register variable[17]: Result */
-        variable[17] = ATTR_array___Array____items(variable[14]) /*Array::_items*/;
-        /* Register variable[17]: Result */
-        variable[17] = UNBOX_NativeArray(variable[17])[UNTAG_Int( variable[15] /*index*/)];
-        variable[16] = variable[17];
-        goto return_label25;
-        return_label25: while(false);
-        /* Register variable[13]: Result */
-        variable[13] = variable[16];
-        CALL_parser___ReduceAction___action(variable[13])(variable[13], variable[0]) /*ReduceAction::action*/;
-      } else { /*if*/
-        /* Register variable[13]: Result */
-        variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(2)));
-        if (UNTAG_Bool(variable[13])) { /*if*/
-          /* Register variable[13]: Local variable */
-          /* Register variable[14]: Result */
-          variable[14] = CALL_lexer___Lexer___next( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::next*/;
-          variable[13] = variable[14];
-          /* Register variable[14]: Result */
-          variable[14] = TAG_Bool(( variable[13] /*node2*/==NIT_NULL) || VAL_ISA( variable[13] /*node2*/, COLOR_EOF, ID_EOF)) /*cast EOF*/;
-          if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 143); nit_exit(1);}
-          /* Register variable[14]: Local variable */
-          /* Register variable[15]: Result */
-          variable[15] = CALL_parser___Parser___pop(variable[0])(variable[0]) /*Parser::pop*/;
-          variable[14] = variable[15];
-          /* Register variable[15]: Result */
-          variable[15] = TAG_Bool(( variable[14] /*node1*/==NIT_NULL) || VAL_ISA( variable[14] /*node1*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
-          if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 145); nit_exit(1);}
-          /* Register variable[15]: Local variable */
-          /* Register variable[16]: Result */
-          variable[16] = NEW_Start_parser_prod___Start___init( variable[14] /*node1*/,  variable[13] /*node2*/) /*new Start*/;
-          variable[15] = variable[16];
-          /* Register variable[16]: Result */
-          variable[16] = NEW_SearchTokensVisitor_parser___SearchTokensVisitor___init() /*new SearchTokensVisitor*/;
-          CALL_parser_prod___Visitor___visit(variable[16])(variable[16],  variable[15] /*node*/) /*SearchTokensVisitor::visit*/;
-          variable[1] =  variable[15] /*node*/;
-          goto return_label15;
-        } else { /*if*/
-          /* Register variable[13]: Result */
-          variable[13] = TAG_Bool(( variable[9] /*action_type*/)==( TAG_Int(3)));
-          if (UNTAG_Bool(variable[13])) { /*if*/
-            /* Register variable[13]: Local variable */
-            /* Register variable[14]: Result */
-            variable[14] = CALL_lexer___Lexer___filename( variable[3] /*lexer*/)( variable[3] /*lexer*/) /*Lexer::filename*/;
-            /* Register variable[15]: Result */
-            variable[15] = CALL_parser_tables___ParserTable___error_messages(variable[0])(variable[0]) /*ParserTable::error_messages*/;
-            /* Register variable[16]: Result */
-            variable[16] = CALL_parser_tables___ParserTable___errors(variable[0])(variable[0]) /*ParserTable::errors*/;
-            /* Register variable[17]: Local variable */
-            variable[17] = variable[16];
-            /* Register variable[18]: Local variable */
-            variable[18] =  variable[10] /*action_value*/;
-            /* Register variable[19]: Method return value and escape marker */
-            /* Register variable[20]: Result */
-            variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-            /* Ensure var variable[20]: Left 'and' operand*/
-            if (UNTAG_Bool(variable[20])) { /* and */
-              /* Register variable[20]: Result */
-              variable[20] = ATTR_array___AbstractArrayRead____length(variable[17]) /*AbstractArrayRead::_length*/;
-              /* Register variable[20]: Result */
-              variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)<UNTAG_Int(variable[20]));
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        /* ../lib/standard/collection/array.nit:269 */
+        REGB0 = TAG_Int(0);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+        }
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:272 */
+        while(1) {
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:235 */
+          REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+          /* ../lib/standard/collection/array.nit:272 */
+          if (UNTAG_Bool(REGB1)) {
+            /* ../lib/standard/collection/array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+            }
+            /* ../lib/standard/collection/array.nit:718 */
+            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+            /* parser/parser.nit:1072 */
+            fra.me.REG[6] = fra.me.REG[2];
+            /* parser/parser.nit:1073 */
+            fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
+            /* parser/parser.nit:1074 */
+            fra.me.REG[8] = CALL_location___Location___file(fra.me.REG[6])(fra.me.REG[6]);
+            REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+            if (UNTAG_Bool(REGB1)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 1074);
             }
-            /* Register variable[20]: Result */
-            if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-            /* Register variable[20]: Result */
-            variable[20] = ATTR_array___Array____items(variable[17]) /*Array::_items*/;
-            /* Register variable[20]: Result */
-            variable[20] = UNBOX_NativeArray(variable[20])[UNTAG_Int( variable[18] /*index*/)];
-            variable[19] = variable[20];
-            goto return_label26;
-            return_label26: while(false);
-            /* Register variable[16]: Result */
-            variable[16] = variable[19];
-            /* Register variable[17]: Local variable */
-            variable[17] = variable[15];
-            /* Register variable[18]: Local variable */
-            variable[18] = variable[16];
-            /* Register variable[19]: Method return value and escape marker */
-            /* Register variable[20]: Result */
-            variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)>=UNTAG_Int( TAG_Int(0)));
-            /* Ensure var variable[20]: Left 'and' operand*/
-            if (UNTAG_Bool(variable[20])) { /* and */
-              /* Register variable[20]: Result */
-              variable[20] = ATTR_array___AbstractArrayRead____length(variable[17]) /*AbstractArrayRead::_length*/;
-              /* Register variable[20]: Result */
-              variable[20] = TAG_Bool(UNTAG_Int( variable[18] /*index*/)<UNTAG_Int(variable[20]));
+            REGB1 = CALL_location___Location___line_end(fra.me.REG[7])(fra.me.REG[7]);
+            REGB2 = CALL_location___Location___line_start(fra.me.REG[6])(fra.me.REG[6]);
+            REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+            if (UNTAG_Bool(REGB3)) {
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 1074);
             }
-            /* Register variable[20]: Result */
-            if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 234); nit_exit(1);}
-            /* Register variable[20]: Result */
-            variable[20] = ATTR_array___Array____items(variable[17]) /*Array::_items*/;
-            /* Register variable[20]: Result */
-            variable[20] = UNBOX_NativeArray(variable[20])[UNTAG_Int( variable[18] /*index*/)];
-            variable[19] = variable[20];
-            goto return_label27;
-            return_label27: while(false);
-            /* Register variable[15]: Result */
-            variable[15] = variable[19];
-            /* Register variable[14]: Result */
-            variable[14] = NEW_PError_lexer___PError___init_error(variable[14],  variable[6] /*last_line*/,  variable[5] /*last_pos*/, variable[15]) /*new PError*/;
-            variable[13] = variable[14];
-            /* Register variable[14]: Local variable */
-            /* Register variable[15]: Result */
-            variable[15] = NEW_Start_parser_prod___Start___init( NIT_NULL /*null*/,  variable[13] /*node2*/) /*new Start*/;
-            variable[14] = variable[15];
-            variable[1] =  variable[14] /*node*/;
-            goto return_label15;
+            REGB3 = CALL_location___Location___column_end(fra.me.REG[7])(fra.me.REG[7]);
+            REGB4 = CALL_location___Location___column_start(fra.me.REG[6])(fra.me.REG[6]);
+            fra.me.REG[8] = NEW_Location_location___Location___init(fra.me.REG[8], REGB1, REGB2, REGB3, REGB4);
+            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB4 = TAG_Int(1);
+            /* ../lib/standard/kernel.nit:238 */
+            REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:274 */
+            REGB0 = REGB4;
+          } else {
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label3;
           }
         }
+        label3: while(0);
+        /* parser/parser.nit:1076 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1076);
+        }
+        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
+      }
+    } else {
+      /* parser/parser.nit:1079 */
+      REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Prod, ID_parser___parser_nodes___Prod)) /*cast Prod*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Assert failed", NULL, LOCATE_parser, 1079);
+      }
+      /* parser/parser.nit:1080 */
+      REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 1080);
+      }
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      /* parser/parser.nit:1082 */
+      fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* parser/parser.nit:1083 */
+      ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
+      /* parser/parser.nit:1084 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 1084);
+      }
+      CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      /* parser/parser.nit:1085 */
+      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
+      /* parser/parser.nit:1086 */
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB0 = REGB4;
+        }
+      }
+      if (UNTAG_Bool(REGB0)) {
+        ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
+      }
+      /* parser/parser.nit:1088 */
+      ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
+      /* parser/parser.nit:1089 */
+      fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
+      /* parser/parser.nit:1090 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          REGB4 = TAG_Bool(0);
+          REGB0 = REGB4;
+        } else {
+          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+          REGB0 = REGB4;
+        }
+      }
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* parser/parser.nit:1092 */
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(0);
+            REGB0 = REGB4;
+          } else {
+            REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB0 = REGB4;
+          }
+        }
+        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Assert failed", NULL, LOCATE_parser, 1092);
+        }
+        /* parser/parser.nit:1094 */
+        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
+        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+        REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB4)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        REGB3 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
+        REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 1094);
+        }
+        CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* parser/parser.nit:1096 */
+        REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1096);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+        REGB2 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+        REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+        if (UNTAG_Bool(REGB2)) {
+          /* parser/parser.nit:1097 */
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1097);
+          }
+          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1097);
+          }
+          REGB2 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1097);
+          }
+          REGB3 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
+          REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1097);
+          }
+          REGB4 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+          REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1097);
+          }
+          REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB2, REGB3, REGB4, REGB0);
+          /* parser/parser.nit:1098 */
+          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1098);
+          }
+          fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          /* ../lib/standard/collection/array.nit:269 */
+          REGB0 = TAG_Int(0);
+          /* ../lib/standard/collection/array.nit:270 */
+          REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          }
+          REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+          /* ../lib/standard/collection/array.nit:271 */
+          fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+          /* ../lib/standard/collection/array.nit:272 */
+          while(1) {
+            /* ../lib/standard/collection/array.nit:24 */
+            REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+            if (UNTAG_Bool(REGB4)) {
+            } else {
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+            }
+            REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+            REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+            if (UNTAG_Bool(REGB3)) {
+            } else {
+              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+            }
+            /* ../lib/standard/kernel.nit:235 */
+            REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:272 */
+            if (UNTAG_Bool(REGB4)) {
+              /* ../lib/standard/collection/array.nit:273 */
+              REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+              if (UNTAG_Bool(REGB4)) {
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              }
+              /* ../lib/standard/collection/array.nit:718 */
+              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB0)];
+              /* parser/parser.nit:1100 */
+              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB4 = TAG_Int(1);
+              /* ../lib/standard/kernel.nit:238 */
+              REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB0 = REGB4;
+            } else {
+              /* ../lib/standard/collection/array.nit:272 */
+              goto label4;
+            }
+          }
+          label4: while(0);
+          /* parser/parser.nit:1102 */
+          REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1102);
+          }
+          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+        }
+        /* parser/parser.nit:1105 */
+        REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1105);
+        }
+        fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+        REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
+        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+        if (UNTAG_Bool(REGB0)) {
+          /* parser/parser.nit:1106 */
+          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1106);
+          }
+          fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
+          REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB0)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1106);
+          }
+          REGB0 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
+          REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1106);
+          }
+          REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1106);
+          }
+          REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 1106);
+          }
+          REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
+          fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
+          /* parser/parser.nit:1107 */
+          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1107);
+          }
+          fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          /* ../lib/standard/collection/array.nit:269 */
+          REGB2 = TAG_Int(0);
+          /* ../lib/standard/collection/array.nit:270 */
+          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+          }
+          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+          /* ../lib/standard/collection/array.nit:271 */
+          fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
+          /* ../lib/standard/collection/array.nit:272 */
+          while(1) {
+            /* ../lib/standard/collection/array.nit:24 */
+            REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
+            if (UNTAG_Bool(REGB3)) {
+            } else {
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+            }
+            REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
+            REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+            if (UNTAG_Bool(REGB4)) {
+            } else {
+              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+            }
+            /* ../lib/standard/kernel.nit:235 */
+            REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+            /* ../lib/standard/collection/array.nit:272 */
+            if (UNTAG_Bool(REGB3)) {
+              /* ../lib/standard/collection/array.nit:273 */
+              REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+              if (UNTAG_Bool(REGB3)) {
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+              }
+              /* ../lib/standard/collection/array.nit:718 */
+              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+              /* parser/parser.nit:1109 */
+              CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB3 = TAG_Int(1);
+              /* ../lib/standard/kernel.nit:238 */
+              REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+              /* ../lib/standard/collection/array.nit:274 */
+              REGB2 = REGB3;
+            } else {
+              /* ../lib/standard/collection/array.nit:272 */
+              goto label5;
+            }
+          }
+          label5: while(0);
+          /* parser/parser.nit:1111 */
+          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1111);
+          }
+          fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
+        }
+      } else {
+        /* parser/parser.nit:1116 */
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            REGB3 = TAG_Bool(0);
+            REGB2 = REGB3;
+          } else {
+            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB2 = REGB3;
+          }
+        }
+        if (UNTAG_Bool(REGB2)) {
+          /* parser/parser.nit:1118 */
+          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 1118);
+          }
+          fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+        } else {
+          /* parser/parser.nit:1121 */
+          REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 1121);
+          }
+          fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+        }
       }
-    }
-    continue_16: while(0);
-  }
-  break_16: while(0);
-  variable[1] =  NIT_NULL /*null*/;
-  goto return_label15;
-  return_label15: while(false);
-  tracehead = trace.prev;
-  return variable[1];
-}
-void parser___Parser___build_reduce_table(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 159, LOCATE_parser___Parser___build_reduce_table};
-  val_t variable[741];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(738)) /*new Array[ReduceAction]*/ /* Ensure var: Literal array*/;
-  /* Register variable[3]: Result */
-  variable[3] = NEW_ReduceAction0_parser___ReduceAction0___init() /*new ReduceAction0*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
-  /* Register variable[4]: Result */
-  variable[4] = NEW_ReduceAction1_parser___ReduceAction1___init() /*new ReduceAction1*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[4]) /*AbstractArray::add*/;
-  /* Register variable[5]: Result */
-  variable[5] = NEW_ReduceAction2_parser___ReduceAction2___init() /*new ReduceAction2*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[5]) /*AbstractArray::add*/;
-  /* Register variable[6]: Result */
-  variable[6] = NEW_ReduceAction3_parser___ReduceAction3___init() /*new ReduceAction3*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[6]) /*AbstractArray::add*/;
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ReduceAction4_parser___ReduceAction4___init() /*new ReduceAction4*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[7]) /*AbstractArray::add*/;
-  /* Register variable[8]: Result */
-  variable[8] = NEW_ReduceAction5_parser___ReduceAction5___init() /*new ReduceAction5*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[8]) /*AbstractArray::add*/;
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ReduceAction6_parser___ReduceAction6___init() /*new ReduceAction6*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[9]) /*AbstractArray::add*/;
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ReduceAction7_parser___ReduceAction7___init() /*new ReduceAction7*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[10]) /*AbstractArray::add*/;
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ReduceAction8_parser___ReduceAction8___init() /*new ReduceAction8*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[11]) /*AbstractArray::add*/;
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ReduceAction9_parser___ReduceAction9___init() /*new ReduceAction9*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[12]) /*AbstractArray::add*/;
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ReduceAction10_parser___ReduceAction10___init() /*new ReduceAction10*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[13]) /*AbstractArray::add*/;
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ReduceAction11_parser___ReduceAction11___init() /*new ReduceAction11*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[14]) /*AbstractArray::add*/;
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ReduceAction12_parser___ReduceAction12___init() /*new ReduceAction12*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[15]) /*AbstractArray::add*/;
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ReduceAction13_parser___ReduceAction13___init() /*new ReduceAction13*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[16]) /*AbstractArray::add*/;
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ReduceAction14_parser___ReduceAction14___init() /*new ReduceAction14*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[17]) /*AbstractArray::add*/;
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ReduceAction15_parser___ReduceAction15___init() /*new ReduceAction15*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[18]) /*AbstractArray::add*/;
-  /* Register variable[19]: Result */
-  variable[19] = NEW_ReduceAction16_parser___ReduceAction16___init() /*new ReduceAction16*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[19]) /*AbstractArray::add*/;
-  /* Register variable[20]: Result */
-  variable[20] = NEW_ReduceAction17_parser___ReduceAction17___init() /*new ReduceAction17*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[20]) /*AbstractArray::add*/;
-  /* Register variable[21]: Result */
-  variable[21] = NEW_ReduceAction18_parser___ReduceAction18___init() /*new ReduceAction18*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[21]) /*AbstractArray::add*/;
-  /* Register variable[22]: Result */
-  variable[22] = NEW_ReduceAction19_parser___ReduceAction19___init() /*new ReduceAction19*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[22]) /*AbstractArray::add*/;
-  /* Register variable[23]: Result */
-  variable[23] = NEW_ReduceAction20_parser___ReduceAction20___init() /*new ReduceAction20*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[23]) /*AbstractArray::add*/;
-  /* Register variable[24]: Result */
-  variable[24] = NEW_ReduceAction21_parser___ReduceAction21___init() /*new ReduceAction21*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[24]) /*AbstractArray::add*/;
-  /* Register variable[25]: Result */
-  variable[25] = NEW_ReduceAction22_parser___ReduceAction22___init() /*new ReduceAction22*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[25]) /*AbstractArray::add*/;
-  /* Register variable[26]: Result */
-  variable[26] = NEW_ReduceAction23_parser___ReduceAction23___init() /*new ReduceAction23*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[26]) /*AbstractArray::add*/;
-  /* Register variable[27]: Result */
-  variable[27] = NEW_ReduceAction24_parser___ReduceAction24___init() /*new ReduceAction24*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[27]) /*AbstractArray::add*/;
-  /* Register variable[28]: Result */
-  variable[28] = NEW_ReduceAction25_parser___ReduceAction25___init() /*new ReduceAction25*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[28]) /*AbstractArray::add*/;
-  /* Register variable[29]: Result */
-  variable[29] = NEW_ReduceAction26_parser___ReduceAction26___init() /*new ReduceAction26*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[29]) /*AbstractArray::add*/;
-  /* Register variable[30]: Result */
-  variable[30] = NEW_ReduceAction27_parser___ReduceAction27___init() /*new ReduceAction27*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[30]) /*AbstractArray::add*/;
-  /* Register variable[31]: Result */
-  variable[31] = NEW_ReduceAction28_parser___ReduceAction28___init() /*new ReduceAction28*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[31]) /*AbstractArray::add*/;
-  /* Register variable[32]: Result */
-  variable[32] = NEW_ReduceAction29_parser___ReduceAction29___init() /*new ReduceAction29*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[32]) /*AbstractArray::add*/;
-  /* Register variable[33]: Result */
-  variable[33] = NEW_ReduceAction30_parser___ReduceAction30___init() /*new ReduceAction30*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[33]) /*AbstractArray::add*/;
-  /* Register variable[34]: Result */
-  variable[34] = NEW_ReduceAction31_parser___ReduceAction31___init() /*new ReduceAction31*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[34]) /*AbstractArray::add*/;
-  /* Register variable[35]: Result */
-  variable[35] = NEW_ReduceAction32_parser___ReduceAction32___init() /*new ReduceAction32*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[35]) /*AbstractArray::add*/;
-  /* Register variable[36]: Result */
-  variable[36] = NEW_ReduceAction33_parser___ReduceAction33___init() /*new ReduceAction33*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[36]) /*AbstractArray::add*/;
-  /* Register variable[37]: Result */
-  variable[37] = NEW_ReduceAction34_parser___ReduceAction34___init() /*new ReduceAction34*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[37]) /*AbstractArray::add*/;
-  /* Register variable[38]: Result */
-  variable[38] = NEW_ReduceAction35_parser___ReduceAction35___init() /*new ReduceAction35*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[38]) /*AbstractArray::add*/;
-  /* Register variable[39]: Result */
-  variable[39] = NEW_ReduceAction36_parser___ReduceAction36___init() /*new ReduceAction36*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[39]) /*AbstractArray::add*/;
-  /* Register variable[40]: Result */
-  variable[40] = NEW_ReduceAction37_parser___ReduceAction37___init() /*new ReduceAction37*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[40]) /*AbstractArray::add*/;
-  /* Register variable[41]: Result */
-  variable[41] = NEW_ReduceAction38_parser___ReduceAction38___init() /*new ReduceAction38*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[41]) /*AbstractArray::add*/;
-  /* Register variable[42]: Result */
-  variable[42] = NEW_ReduceAction39_parser___ReduceAction39___init() /*new ReduceAction39*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[42]) /*AbstractArray::add*/;
-  /* Register variable[43]: Result */
-  variable[43] = NEW_ReduceAction40_parser___ReduceAction40___init() /*new ReduceAction40*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[43]) /*AbstractArray::add*/;
-  /* Register variable[44]: Result */
-  variable[44] = NEW_ReduceAction41_parser___ReduceAction41___init() /*new ReduceAction41*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[44]) /*AbstractArray::add*/;
-  /* Register variable[45]: Result */
-  variable[45] = NEW_ReduceAction42_parser___ReduceAction42___init() /*new ReduceAction42*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[45]) /*AbstractArray::add*/;
-  /* Register variable[46]: Result */
-  variable[46] = NEW_ReduceAction43_parser___ReduceAction43___init() /*new ReduceAction43*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[46]) /*AbstractArray::add*/;
-  /* Register variable[47]: Result */
-  variable[47] = NEW_ReduceAction44_parser___ReduceAction44___init() /*new ReduceAction44*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[47]) /*AbstractArray::add*/;
-  /* Register variable[48]: Result */
-  variable[48] = NEW_ReduceAction45_parser___ReduceAction45___init() /*new ReduceAction45*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[48]) /*AbstractArray::add*/;
-  /* Register variable[49]: Result */
-  variable[49] = NEW_ReduceAction46_parser___ReduceAction46___init() /*new ReduceAction46*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[49]) /*AbstractArray::add*/;
-  /* Register variable[50]: Result */
-  variable[50] = NEW_ReduceAction47_parser___ReduceAction47___init() /*new ReduceAction47*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[50]) /*AbstractArray::add*/;
-  /* Register variable[51]: Result */
-  variable[51] = NEW_ReduceAction48_parser___ReduceAction48___init() /*new ReduceAction48*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[51]) /*AbstractArray::add*/;
-  /* Register variable[52]: Result */
-  variable[52] = NEW_ReduceAction49_parser___ReduceAction49___init() /*new ReduceAction49*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[52]) /*AbstractArray::add*/;
-  /* Register variable[53]: Result */
-  variable[53] = NEW_ReduceAction50_parser___ReduceAction50___init() /*new ReduceAction50*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[53]) /*AbstractArray::add*/;
-  /* Register variable[54]: Result */
-  variable[54] = NEW_ReduceAction51_parser___ReduceAction51___init() /*new ReduceAction51*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[54]) /*AbstractArray::add*/;
-  /* Register variable[55]: Result */
-  variable[55] = NEW_ReduceAction52_parser___ReduceAction52___init() /*new ReduceAction52*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[55]) /*AbstractArray::add*/;
-  /* Register variable[56]: Result */
-  variable[56] = NEW_ReduceAction53_parser___ReduceAction53___init() /*new ReduceAction53*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[56]) /*AbstractArray::add*/;
-  /* Register variable[57]: Result */
-  variable[57] = NEW_ReduceAction54_parser___ReduceAction54___init() /*new ReduceAction54*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[57]) /*AbstractArray::add*/;
-  /* Register variable[58]: Result */
-  variable[58] = NEW_ReduceAction55_parser___ReduceAction55___init() /*new ReduceAction55*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[58]) /*AbstractArray::add*/;
-  /* Register variable[59]: Result */
-  variable[59] = NEW_ReduceAction56_parser___ReduceAction56___init() /*new ReduceAction56*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[59]) /*AbstractArray::add*/;
-  /* Register variable[60]: Result */
-  variable[60] = NEW_ReduceAction57_parser___ReduceAction57___init() /*new ReduceAction57*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[60]) /*AbstractArray::add*/;
-  /* Register variable[61]: Result */
-  variable[61] = NEW_ReduceAction58_parser___ReduceAction58___init() /*new ReduceAction58*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[61]) /*AbstractArray::add*/;
-  /* Register variable[62]: Result */
-  variable[62] = NEW_ReduceAction59_parser___ReduceAction59___init() /*new ReduceAction59*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[62]) /*AbstractArray::add*/;
-  /* Register variable[63]: Result */
-  variable[63] = NEW_ReduceAction60_parser___ReduceAction60___init() /*new ReduceAction60*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[63]) /*AbstractArray::add*/;
-  /* Register variable[64]: Result */
-  variable[64] = NEW_ReduceAction61_parser___ReduceAction61___init() /*new ReduceAction61*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[64]) /*AbstractArray::add*/;
-  /* Register variable[65]: Result */
-  variable[65] = NEW_ReduceAction62_parser___ReduceAction62___init() /*new ReduceAction62*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[65]) /*AbstractArray::add*/;
-  /* Register variable[66]: Result */
-  variable[66] = NEW_ReduceAction63_parser___ReduceAction63___init() /*new ReduceAction63*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[66]) /*AbstractArray::add*/;
-  /* Register variable[67]: Result */
-  variable[67] = NEW_ReduceAction64_parser___ReduceAction64___init() /*new ReduceAction64*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[67]) /*AbstractArray::add*/;
-  /* Register variable[68]: Result */
-  variable[68] = NEW_ReduceAction65_parser___ReduceAction65___init() /*new ReduceAction65*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[68]) /*AbstractArray::add*/;
-  /* Register variable[69]: Result */
-  variable[69] = NEW_ReduceAction66_parser___ReduceAction66___init() /*new ReduceAction66*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[69]) /*AbstractArray::add*/;
-  /* Register variable[70]: Result */
-  variable[70] = NEW_ReduceAction67_parser___ReduceAction67___init() /*new ReduceAction67*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[70]) /*AbstractArray::add*/;
-  /* Register variable[71]: Result */
-  variable[71] = NEW_ReduceAction68_parser___ReduceAction68___init() /*new ReduceAction68*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[71]) /*AbstractArray::add*/;
-  /* Register variable[72]: Result */
-  variable[72] = NEW_ReduceAction69_parser___ReduceAction69___init() /*new ReduceAction69*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[72]) /*AbstractArray::add*/;
-  /* Register variable[73]: Result */
-  variable[73] = NEW_ReduceAction70_parser___ReduceAction70___init() /*new ReduceAction70*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[73]) /*AbstractArray::add*/;
-  /* Register variable[74]: Result */
-  variable[74] = NEW_ReduceAction71_parser___ReduceAction71___init() /*new ReduceAction71*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[74]) /*AbstractArray::add*/;
-  /* Register variable[75]: Result */
-  variable[75] = NEW_ReduceAction72_parser___ReduceAction72___init() /*new ReduceAction72*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[75]) /*AbstractArray::add*/;
-  /* Register variable[76]: Result */
-  variable[76] = NEW_ReduceAction73_parser___ReduceAction73___init() /*new ReduceAction73*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[76]) /*AbstractArray::add*/;
-  /* Register variable[77]: Result */
-  variable[77] = NEW_ReduceAction74_parser___ReduceAction74___init() /*new ReduceAction74*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[77]) /*AbstractArray::add*/;
-  /* Register variable[78]: Result */
-  variable[78] = NEW_ReduceAction75_parser___ReduceAction75___init() /*new ReduceAction75*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[78]) /*AbstractArray::add*/;
-  /* Register variable[79]: Result */
-  variable[79] = NEW_ReduceAction76_parser___ReduceAction76___init() /*new ReduceAction76*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[79]) /*AbstractArray::add*/;
-  /* Register variable[80]: Result */
-  variable[80] = NEW_ReduceAction77_parser___ReduceAction77___init() /*new ReduceAction77*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[80]) /*AbstractArray::add*/;
-  /* Register variable[81]: Result */
-  variable[81] = NEW_ReduceAction78_parser___ReduceAction78___init() /*new ReduceAction78*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[81]) /*AbstractArray::add*/;
-  /* Register variable[82]: Result */
-  variable[82] = NEW_ReduceAction79_parser___ReduceAction79___init() /*new ReduceAction79*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[82]) /*AbstractArray::add*/;
-  /* Register variable[83]: Result */
-  variable[83] = NEW_ReduceAction80_parser___ReduceAction80___init() /*new ReduceAction80*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[83]) /*AbstractArray::add*/;
-  /* Register variable[84]: Result */
-  variable[84] = NEW_ReduceAction81_parser___ReduceAction81___init() /*new ReduceAction81*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[84]) /*AbstractArray::add*/;
-  /* Register variable[85]: Result */
-  variable[85] = NEW_ReduceAction82_parser___ReduceAction82___init() /*new ReduceAction82*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[85]) /*AbstractArray::add*/;
-  /* Register variable[86]: Result */
-  variable[86] = NEW_ReduceAction83_parser___ReduceAction83___init() /*new ReduceAction83*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[86]) /*AbstractArray::add*/;
-  /* Register variable[87]: Result */
-  variable[87] = NEW_ReduceAction84_parser___ReduceAction84___init() /*new ReduceAction84*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[87]) /*AbstractArray::add*/;
-  /* Register variable[88]: Result */
-  variable[88] = NEW_ReduceAction85_parser___ReduceAction85___init() /*new ReduceAction85*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[88]) /*AbstractArray::add*/;
-  /* Register variable[89]: Result */
-  variable[89] = NEW_ReduceAction86_parser___ReduceAction86___init() /*new ReduceAction86*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[89]) /*AbstractArray::add*/;
-  /* Register variable[90]: Result */
-  variable[90] = NEW_ReduceAction87_parser___ReduceAction87___init() /*new ReduceAction87*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[90]) /*AbstractArray::add*/;
-  /* Register variable[91]: Result */
-  variable[91] = NEW_ReduceAction88_parser___ReduceAction88___init() /*new ReduceAction88*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[91]) /*AbstractArray::add*/;
-  /* Register variable[92]: Result */
-  variable[92] = NEW_ReduceAction89_parser___ReduceAction89___init() /*new ReduceAction89*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[92]) /*AbstractArray::add*/;
-  /* Register variable[93]: Result */
-  variable[93] = NEW_ReduceAction90_parser___ReduceAction90___init() /*new ReduceAction90*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[93]) /*AbstractArray::add*/;
-  /* Register variable[94]: Result */
-  variable[94] = NEW_ReduceAction91_parser___ReduceAction91___init() /*new ReduceAction91*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[94]) /*AbstractArray::add*/;
-  /* Register variable[95]: Result */
-  variable[95] = NEW_ReduceAction92_parser___ReduceAction92___init() /*new ReduceAction92*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[95]) /*AbstractArray::add*/;
-  /* Register variable[96]: Result */
-  variable[96] = NEW_ReduceAction93_parser___ReduceAction93___init() /*new ReduceAction93*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[96]) /*AbstractArray::add*/;
-  /* Register variable[97]: Result */
-  variable[97] = NEW_ReduceAction94_parser___ReduceAction94___init() /*new ReduceAction94*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[97]) /*AbstractArray::add*/;
-  /* Register variable[98]: Result */
-  variable[98] = NEW_ReduceAction95_parser___ReduceAction95___init() /*new ReduceAction95*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[98]) /*AbstractArray::add*/;
-  /* Register variable[99]: Result */
-  variable[99] = NEW_ReduceAction96_parser___ReduceAction96___init() /*new ReduceAction96*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[99]) /*AbstractArray::add*/;
-  /* Register variable[100]: Result */
-  variable[100] = NEW_ReduceAction97_parser___ReduceAction97___init() /*new ReduceAction97*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[100]) /*AbstractArray::add*/;
-  /* Register variable[101]: Result */
-  variable[101] = NEW_ReduceAction98_parser___ReduceAction98___init() /*new ReduceAction98*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[101]) /*AbstractArray::add*/;
-  /* Register variable[102]: Result */
-  variable[102] = NEW_ReduceAction99_parser___ReduceAction99___init() /*new ReduceAction99*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[102]) /*AbstractArray::add*/;
-  /* Register variable[103]: Result */
-  variable[103] = NEW_ReduceAction100_parser___ReduceAction100___init() /*new ReduceAction100*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[103]) /*AbstractArray::add*/;
-  /* Register variable[104]: Result */
-  variable[104] = NEW_ReduceAction101_parser___ReduceAction101___init() /*new ReduceAction101*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[104]) /*AbstractArray::add*/;
-  /* Register variable[105]: Result */
-  variable[105] = NEW_ReduceAction102_parser___ReduceAction102___init() /*new ReduceAction102*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[105]) /*AbstractArray::add*/;
-  /* Register variable[106]: Result */
-  variable[106] = NEW_ReduceAction103_parser___ReduceAction103___init() /*new ReduceAction103*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[106]) /*AbstractArray::add*/;
-  /* Register variable[107]: Result */
-  variable[107] = NEW_ReduceAction104_parser___ReduceAction104___init() /*new ReduceAction104*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[107]) /*AbstractArray::add*/;
-  /* Register variable[108]: Result */
-  variable[108] = NEW_ReduceAction105_parser___ReduceAction105___init() /*new ReduceAction105*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[108]) /*AbstractArray::add*/;
-  /* Register variable[109]: Result */
-  variable[109] = NEW_ReduceAction106_parser___ReduceAction106___init() /*new ReduceAction106*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[109]) /*AbstractArray::add*/;
-  /* Register variable[110]: Result */
-  variable[110] = NEW_ReduceAction107_parser___ReduceAction107___init() /*new ReduceAction107*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[110]) /*AbstractArray::add*/;
-  /* Register variable[111]: Result */
-  variable[111] = NEW_ReduceAction108_parser___ReduceAction108___init() /*new ReduceAction108*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[111]) /*AbstractArray::add*/;
-  /* Register variable[112]: Result */
-  variable[112] = NEW_ReduceAction109_parser___ReduceAction109___init() /*new ReduceAction109*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[112]) /*AbstractArray::add*/;
-  /* Register variable[113]: Result */
-  variable[113] = NEW_ReduceAction110_parser___ReduceAction110___init() /*new ReduceAction110*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[113]) /*AbstractArray::add*/;
-  /* Register variable[114]: Result */
-  variable[114] = NEW_ReduceAction111_parser___ReduceAction111___init() /*new ReduceAction111*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[114]) /*AbstractArray::add*/;
-  /* Register variable[115]: Result */
-  variable[115] = NEW_ReduceAction112_parser___ReduceAction112___init() /*new ReduceAction112*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[115]) /*AbstractArray::add*/;
-  /* Register variable[116]: Result */
-  variable[116] = NEW_ReduceAction113_parser___ReduceAction113___init() /*new ReduceAction113*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[116]) /*AbstractArray::add*/;
-  /* Register variable[117]: Result */
-  variable[117] = NEW_ReduceAction114_parser___ReduceAction114___init() /*new ReduceAction114*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[117]) /*AbstractArray::add*/;
-  /* Register variable[118]: Result */
-  variable[118] = NEW_ReduceAction115_parser___ReduceAction115___init() /*new ReduceAction115*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[118]) /*AbstractArray::add*/;
-  /* Register variable[119]: Result */
-  variable[119] = NEW_ReduceAction116_parser___ReduceAction116___init() /*new ReduceAction116*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[119]) /*AbstractArray::add*/;
-  /* Register variable[120]: Result */
-  variable[120] = NEW_ReduceAction117_parser___ReduceAction117___init() /*new ReduceAction117*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[120]) /*AbstractArray::add*/;
-  /* Register variable[121]: Result */
-  variable[121] = NEW_ReduceAction118_parser___ReduceAction118___init() /*new ReduceAction118*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[121]) /*AbstractArray::add*/;
-  /* Register variable[122]: Result */
-  variable[122] = NEW_ReduceAction119_parser___ReduceAction119___init() /*new ReduceAction119*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[122]) /*AbstractArray::add*/;
-  /* Register variable[123]: Result */
-  variable[123] = NEW_ReduceAction120_parser___ReduceAction120___init() /*new ReduceAction120*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[123]) /*AbstractArray::add*/;
-  /* Register variable[124]: Result */
-  variable[124] = NEW_ReduceAction121_parser___ReduceAction121___init() /*new ReduceAction121*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[124]) /*AbstractArray::add*/;
-  /* Register variable[125]: Result */
-  variable[125] = NEW_ReduceAction122_parser___ReduceAction122___init() /*new ReduceAction122*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[125]) /*AbstractArray::add*/;
-  /* Register variable[126]: Result */
-  variable[126] = NEW_ReduceAction123_parser___ReduceAction123___init() /*new ReduceAction123*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[126]) /*AbstractArray::add*/;
-  /* Register variable[127]: Result */
-  variable[127] = NEW_ReduceAction124_parser___ReduceAction124___init() /*new ReduceAction124*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[127]) /*AbstractArray::add*/;
-  /* Register variable[128]: Result */
-  variable[128] = NEW_ReduceAction125_parser___ReduceAction125___init() /*new ReduceAction125*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[128]) /*AbstractArray::add*/;
-  /* Register variable[129]: Result */
-  variable[129] = NEW_ReduceAction126_parser___ReduceAction126___init() /*new ReduceAction126*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[129]) /*AbstractArray::add*/;
-  /* Register variable[130]: Result */
-  variable[130] = NEW_ReduceAction127_parser___ReduceAction127___init() /*new ReduceAction127*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[130]) /*AbstractArray::add*/;
-  /* Register variable[131]: Result */
-  variable[131] = NEW_ReduceAction128_parser___ReduceAction128___init() /*new ReduceAction128*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[131]) /*AbstractArray::add*/;
-  /* Register variable[132]: Result */
-  variable[132] = NEW_ReduceAction129_parser___ReduceAction129___init() /*new ReduceAction129*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[132]) /*AbstractArray::add*/;
-  /* Register variable[133]: Result */
-  variable[133] = NEW_ReduceAction130_parser___ReduceAction130___init() /*new ReduceAction130*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[133]) /*AbstractArray::add*/;
-  /* Register variable[134]: Result */
-  variable[134] = NEW_ReduceAction131_parser___ReduceAction131___init() /*new ReduceAction131*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[134]) /*AbstractArray::add*/;
-  /* Register variable[135]: Result */
-  variable[135] = NEW_ReduceAction132_parser___ReduceAction132___init() /*new ReduceAction132*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[135]) /*AbstractArray::add*/;
-  /* Register variable[136]: Result */
-  variable[136] = NEW_ReduceAction133_parser___ReduceAction133___init() /*new ReduceAction133*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[136]) /*AbstractArray::add*/;
-  /* Register variable[137]: Result */
-  variable[137] = NEW_ReduceAction134_parser___ReduceAction134___init() /*new ReduceAction134*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[137]) /*AbstractArray::add*/;
-  /* Register variable[138]: Result */
-  variable[138] = NEW_ReduceAction135_parser___ReduceAction135___init() /*new ReduceAction135*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[138]) /*AbstractArray::add*/;
-  /* Register variable[139]: Result */
-  variable[139] = NEW_ReduceAction136_parser___ReduceAction136___init() /*new ReduceAction136*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[139]) /*AbstractArray::add*/;
-  /* Register variable[140]: Result */
-  variable[140] = NEW_ReduceAction137_parser___ReduceAction137___init() /*new ReduceAction137*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[140]) /*AbstractArray::add*/;
-  /* Register variable[141]: Result */
-  variable[141] = NEW_ReduceAction138_parser___ReduceAction138___init() /*new ReduceAction138*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[141]) /*AbstractArray::add*/;
-  /* Register variable[142]: Result */
-  variable[142] = NEW_ReduceAction139_parser___ReduceAction139___init() /*new ReduceAction139*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[142]) /*AbstractArray::add*/;
-  /* Register variable[143]: Result */
-  variable[143] = NEW_ReduceAction140_parser___ReduceAction140___init() /*new ReduceAction140*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[143]) /*AbstractArray::add*/;
-  /* Register variable[144]: Result */
-  variable[144] = NEW_ReduceAction141_parser___ReduceAction141___init() /*new ReduceAction141*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[144]) /*AbstractArray::add*/;
-  /* Register variable[145]: Result */
-  variable[145] = NEW_ReduceAction142_parser___ReduceAction142___init() /*new ReduceAction142*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[145]) /*AbstractArray::add*/;
-  /* Register variable[146]: Result */
-  variable[146] = NEW_ReduceAction143_parser___ReduceAction143___init() /*new ReduceAction143*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[146]) /*AbstractArray::add*/;
-  /* Register variable[147]: Result */
-  variable[147] = NEW_ReduceAction144_parser___ReduceAction144___init() /*new ReduceAction144*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[147]) /*AbstractArray::add*/;
-  /* Register variable[148]: Result */
-  variable[148] = NEW_ReduceAction145_parser___ReduceAction145___init() /*new ReduceAction145*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[148]) /*AbstractArray::add*/;
-  /* Register variable[149]: Result */
-  variable[149] = NEW_ReduceAction146_parser___ReduceAction146___init() /*new ReduceAction146*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[149]) /*AbstractArray::add*/;
-  /* Register variable[150]: Result */
-  variable[150] = NEW_ReduceAction147_parser___ReduceAction147___init() /*new ReduceAction147*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[150]) /*AbstractArray::add*/;
-  /* Register variable[151]: Result */
-  variable[151] = NEW_ReduceAction148_parser___ReduceAction148___init() /*new ReduceAction148*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[151]) /*AbstractArray::add*/;
-  /* Register variable[152]: Result */
-  variable[152] = NEW_ReduceAction149_parser___ReduceAction149___init() /*new ReduceAction149*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[152]) /*AbstractArray::add*/;
-  /* Register variable[153]: Result */
-  variable[153] = NEW_ReduceAction150_parser___ReduceAction150___init() /*new ReduceAction150*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[153]) /*AbstractArray::add*/;
-  /* Register variable[154]: Result */
-  variable[154] = NEW_ReduceAction151_parser___ReduceAction151___init() /*new ReduceAction151*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[154]) /*AbstractArray::add*/;
-  /* Register variable[155]: Result */
-  variable[155] = NEW_ReduceAction152_parser___ReduceAction152___init() /*new ReduceAction152*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[155]) /*AbstractArray::add*/;
-  /* Register variable[156]: Result */
-  variable[156] = NEW_ReduceAction153_parser___ReduceAction153___init() /*new ReduceAction153*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[156]) /*AbstractArray::add*/;
-  /* Register variable[157]: Result */
-  variable[157] = NEW_ReduceAction154_parser___ReduceAction154___init() /*new ReduceAction154*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[157]) /*AbstractArray::add*/;
-  /* Register variable[158]: Result */
-  variable[158] = NEW_ReduceAction155_parser___ReduceAction155___init() /*new ReduceAction155*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[158]) /*AbstractArray::add*/;
-  /* Register variable[159]: Result */
-  variable[159] = NEW_ReduceAction156_parser___ReduceAction156___init() /*new ReduceAction156*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[159]) /*AbstractArray::add*/;
-  /* Register variable[160]: Result */
-  variable[160] = NEW_ReduceAction157_parser___ReduceAction157___init() /*new ReduceAction157*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[160]) /*AbstractArray::add*/;
-  /* Register variable[161]: Result */
-  variable[161] = NEW_ReduceAction158_parser___ReduceAction158___init() /*new ReduceAction158*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[161]) /*AbstractArray::add*/;
-  /* Register variable[162]: Result */
-  variable[162] = NEW_ReduceAction159_parser___ReduceAction159___init() /*new ReduceAction159*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[162]) /*AbstractArray::add*/;
-  /* Register variable[163]: Result */
-  variable[163] = NEW_ReduceAction160_parser___ReduceAction160___init() /*new ReduceAction160*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[163]) /*AbstractArray::add*/;
-  /* Register variable[164]: Result */
-  variable[164] = NEW_ReduceAction161_parser___ReduceAction161___init() /*new ReduceAction161*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[164]) /*AbstractArray::add*/;
-  /* Register variable[165]: Result */
-  variable[165] = NEW_ReduceAction162_parser___ReduceAction162___init() /*new ReduceAction162*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[165]) /*AbstractArray::add*/;
-  /* Register variable[166]: Result */
-  variable[166] = NEW_ReduceAction163_parser___ReduceAction163___init() /*new ReduceAction163*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[166]) /*AbstractArray::add*/;
-  /* Register variable[167]: Result */
-  variable[167] = NEW_ReduceAction164_parser___ReduceAction164___init() /*new ReduceAction164*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[167]) /*AbstractArray::add*/;
-  /* Register variable[168]: Result */
-  variable[168] = NEW_ReduceAction165_parser___ReduceAction165___init() /*new ReduceAction165*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[168]) /*AbstractArray::add*/;
-  /* Register variable[169]: Result */
-  variable[169] = NEW_ReduceAction166_parser___ReduceAction166___init() /*new ReduceAction166*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[169]) /*AbstractArray::add*/;
-  /* Register variable[170]: Result */
-  variable[170] = NEW_ReduceAction167_parser___ReduceAction167___init() /*new ReduceAction167*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[170]) /*AbstractArray::add*/;
-  /* Register variable[171]: Result */
-  variable[171] = NEW_ReduceAction168_parser___ReduceAction168___init() /*new ReduceAction168*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[171]) /*AbstractArray::add*/;
-  /* Register variable[172]: Result */
-  variable[172] = NEW_ReduceAction169_parser___ReduceAction169___init() /*new ReduceAction169*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[172]) /*AbstractArray::add*/;
-  /* Register variable[173]: Result */
-  variable[173] = NEW_ReduceAction170_parser___ReduceAction170___init() /*new ReduceAction170*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[173]) /*AbstractArray::add*/;
-  /* Register variable[174]: Result */
-  variable[174] = NEW_ReduceAction171_parser___ReduceAction171___init() /*new ReduceAction171*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[174]) /*AbstractArray::add*/;
-  /* Register variable[175]: Result */
-  variable[175] = NEW_ReduceAction172_parser___ReduceAction172___init() /*new ReduceAction172*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[175]) /*AbstractArray::add*/;
-  /* Register variable[176]: Result */
-  variable[176] = NEW_ReduceAction173_parser___ReduceAction173___init() /*new ReduceAction173*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[176]) /*AbstractArray::add*/;
-  /* Register variable[177]: Result */
-  variable[177] = NEW_ReduceAction174_parser___ReduceAction174___init() /*new ReduceAction174*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[177]) /*AbstractArray::add*/;
-  /* Register variable[178]: Result */
-  variable[178] = NEW_ReduceAction175_parser___ReduceAction175___init() /*new ReduceAction175*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[178]) /*AbstractArray::add*/;
-  /* Register variable[179]: Result */
-  variable[179] = NEW_ReduceAction176_parser___ReduceAction176___init() /*new ReduceAction176*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[179]) /*AbstractArray::add*/;
-  /* Register variable[180]: Result */
-  variable[180] = NEW_ReduceAction177_parser___ReduceAction177___init() /*new ReduceAction177*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[180]) /*AbstractArray::add*/;
-  /* Register variable[181]: Result */
-  variable[181] = NEW_ReduceAction178_parser___ReduceAction178___init() /*new ReduceAction178*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[181]) /*AbstractArray::add*/;
-  /* Register variable[182]: Result */
-  variable[182] = NEW_ReduceAction179_parser___ReduceAction179___init() /*new ReduceAction179*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[182]) /*AbstractArray::add*/;
-  /* Register variable[183]: Result */
-  variable[183] = NEW_ReduceAction180_parser___ReduceAction180___init() /*new ReduceAction180*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[183]) /*AbstractArray::add*/;
-  /* Register variable[184]: Result */
-  variable[184] = NEW_ReduceAction181_parser___ReduceAction181___init() /*new ReduceAction181*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[184]) /*AbstractArray::add*/;
-  /* Register variable[185]: Result */
-  variable[185] = NEW_ReduceAction182_parser___ReduceAction182___init() /*new ReduceAction182*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[185]) /*AbstractArray::add*/;
-  /* Register variable[186]: Result */
-  variable[186] = NEW_ReduceAction183_parser___ReduceAction183___init() /*new ReduceAction183*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[186]) /*AbstractArray::add*/;
-  /* Register variable[187]: Result */
-  variable[187] = NEW_ReduceAction184_parser___ReduceAction184___init() /*new ReduceAction184*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[187]) /*AbstractArray::add*/;
-  /* Register variable[188]: Result */
-  variable[188] = NEW_ReduceAction185_parser___ReduceAction185___init() /*new ReduceAction185*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[188]) /*AbstractArray::add*/;
-  /* Register variable[189]: Result */
-  variable[189] = NEW_ReduceAction186_parser___ReduceAction186___init() /*new ReduceAction186*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[189]) /*AbstractArray::add*/;
-  /* Register variable[190]: Result */
-  variable[190] = NEW_ReduceAction187_parser___ReduceAction187___init() /*new ReduceAction187*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[190]) /*AbstractArray::add*/;
-  /* Register variable[191]: Result */
-  variable[191] = NEW_ReduceAction188_parser___ReduceAction188___init() /*new ReduceAction188*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[191]) /*AbstractArray::add*/;
-  /* Register variable[192]: Result */
-  variable[192] = NEW_ReduceAction189_parser___ReduceAction189___init() /*new ReduceAction189*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[192]) /*AbstractArray::add*/;
-  /* Register variable[193]: Result */
-  variable[193] = NEW_ReduceAction190_parser___ReduceAction190___init() /*new ReduceAction190*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[193]) /*AbstractArray::add*/;
-  /* Register variable[194]: Result */
-  variable[194] = NEW_ReduceAction191_parser___ReduceAction191___init() /*new ReduceAction191*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[194]) /*AbstractArray::add*/;
-  /* Register variable[195]: Result */
-  variable[195] = NEW_ReduceAction192_parser___ReduceAction192___init() /*new ReduceAction192*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[195]) /*AbstractArray::add*/;
-  /* Register variable[196]: Result */
-  variable[196] = NEW_ReduceAction193_parser___ReduceAction193___init() /*new ReduceAction193*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[196]) /*AbstractArray::add*/;
-  /* Register variable[197]: Result */
-  variable[197] = NEW_ReduceAction194_parser___ReduceAction194___init() /*new ReduceAction194*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[197]) /*AbstractArray::add*/;
-  /* Register variable[198]: Result */
-  variable[198] = NEW_ReduceAction195_parser___ReduceAction195___init() /*new ReduceAction195*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[198]) /*AbstractArray::add*/;
-  /* Register variable[199]: Result */
-  variable[199] = NEW_ReduceAction196_parser___ReduceAction196___init() /*new ReduceAction196*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[199]) /*AbstractArray::add*/;
-  /* Register variable[200]: Result */
-  variable[200] = NEW_ReduceAction197_parser___ReduceAction197___init() /*new ReduceAction197*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[200]) /*AbstractArray::add*/;
-  /* Register variable[201]: Result */
-  variable[201] = NEW_ReduceAction198_parser___ReduceAction198___init() /*new ReduceAction198*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[201]) /*AbstractArray::add*/;
-  /* Register variable[202]: Result */
-  variable[202] = NEW_ReduceAction199_parser___ReduceAction199___init() /*new ReduceAction199*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[202]) /*AbstractArray::add*/;
-  /* Register variable[203]: Result */
-  variable[203] = NEW_ReduceAction200_parser___ReduceAction200___init() /*new ReduceAction200*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[203]) /*AbstractArray::add*/;
-  /* Register variable[204]: Result */
-  variable[204] = NEW_ReduceAction201_parser___ReduceAction201___init() /*new ReduceAction201*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[204]) /*AbstractArray::add*/;
-  /* Register variable[205]: Result */
-  variable[205] = NEW_ReduceAction202_parser___ReduceAction202___init() /*new ReduceAction202*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[205]) /*AbstractArray::add*/;
-  /* Register variable[206]: Result */
-  variable[206] = NEW_ReduceAction203_parser___ReduceAction203___init() /*new ReduceAction203*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[206]) /*AbstractArray::add*/;
-  /* Register variable[207]: Result */
-  variable[207] = NEW_ReduceAction204_parser___ReduceAction204___init() /*new ReduceAction204*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[207]) /*AbstractArray::add*/;
-  /* Register variable[208]: Result */
-  variable[208] = NEW_ReduceAction205_parser___ReduceAction205___init() /*new ReduceAction205*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[208]) /*AbstractArray::add*/;
-  /* Register variable[209]: Result */
-  variable[209] = NEW_ReduceAction206_parser___ReduceAction206___init() /*new ReduceAction206*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[209]) /*AbstractArray::add*/;
-  /* Register variable[210]: Result */
-  variable[210] = NEW_ReduceAction207_parser___ReduceAction207___init() /*new ReduceAction207*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[210]) /*AbstractArray::add*/;
-  /* Register variable[211]: Result */
-  variable[211] = NEW_ReduceAction208_parser___ReduceAction208___init() /*new ReduceAction208*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[211]) /*AbstractArray::add*/;
-  /* Register variable[212]: Result */
-  variable[212] = NEW_ReduceAction209_parser___ReduceAction209___init() /*new ReduceAction209*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[212]) /*AbstractArray::add*/;
-  /* Register variable[213]: Result */
-  variable[213] = NEW_ReduceAction210_parser___ReduceAction210___init() /*new ReduceAction210*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[213]) /*AbstractArray::add*/;
-  /* Register variable[214]: Result */
-  variable[214] = NEW_ReduceAction211_parser___ReduceAction211___init() /*new ReduceAction211*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[214]) /*AbstractArray::add*/;
-  /* Register variable[215]: Result */
-  variable[215] = NEW_ReduceAction212_parser___ReduceAction212___init() /*new ReduceAction212*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[215]) /*AbstractArray::add*/;
-  /* Register variable[216]: Result */
-  variable[216] = NEW_ReduceAction213_parser___ReduceAction213___init() /*new ReduceAction213*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[216]) /*AbstractArray::add*/;
-  /* Register variable[217]: Result */
-  variable[217] = NEW_ReduceAction214_parser___ReduceAction214___init() /*new ReduceAction214*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[217]) /*AbstractArray::add*/;
-  /* Register variable[218]: Result */
-  variable[218] = NEW_ReduceAction215_parser___ReduceAction215___init() /*new ReduceAction215*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[218]) /*AbstractArray::add*/;
-  /* Register variable[219]: Result */
-  variable[219] = NEW_ReduceAction216_parser___ReduceAction216___init() /*new ReduceAction216*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[219]) /*AbstractArray::add*/;
-  /* Register variable[220]: Result */
-  variable[220] = NEW_ReduceAction217_parser___ReduceAction217___init() /*new ReduceAction217*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[220]) /*AbstractArray::add*/;
-  /* Register variable[221]: Result */
-  variable[221] = NEW_ReduceAction218_parser___ReduceAction218___init() /*new ReduceAction218*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[221]) /*AbstractArray::add*/;
-  /* Register variable[222]: Result */
-  variable[222] = NEW_ReduceAction219_parser___ReduceAction219___init() /*new ReduceAction219*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[222]) /*AbstractArray::add*/;
-  /* Register variable[223]: Result */
-  variable[223] = NEW_ReduceAction220_parser___ReduceAction220___init() /*new ReduceAction220*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[223]) /*AbstractArray::add*/;
-  /* Register variable[224]: Result */
-  variable[224] = NEW_ReduceAction221_parser___ReduceAction221___init() /*new ReduceAction221*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[224]) /*AbstractArray::add*/;
-  /* Register variable[225]: Result */
-  variable[225] = NEW_ReduceAction222_parser___ReduceAction222___init() /*new ReduceAction222*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[225]) /*AbstractArray::add*/;
-  /* Register variable[226]: Result */
-  variable[226] = NEW_ReduceAction223_parser___ReduceAction223___init() /*new ReduceAction223*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[226]) /*AbstractArray::add*/;
-  /* Register variable[227]: Result */
-  variable[227] = NEW_ReduceAction224_parser___ReduceAction224___init() /*new ReduceAction224*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[227]) /*AbstractArray::add*/;
-  /* Register variable[228]: Result */
-  variable[228] = NEW_ReduceAction225_parser___ReduceAction225___init() /*new ReduceAction225*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[228]) /*AbstractArray::add*/;
-  /* Register variable[229]: Result */
-  variable[229] = NEW_ReduceAction226_parser___ReduceAction226___init() /*new ReduceAction226*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[229]) /*AbstractArray::add*/;
-  /* Register variable[230]: Result */
-  variable[230] = NEW_ReduceAction227_parser___ReduceAction227___init() /*new ReduceAction227*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[230]) /*AbstractArray::add*/;
-  /* Register variable[231]: Result */
-  variable[231] = NEW_ReduceAction228_parser___ReduceAction228___init() /*new ReduceAction228*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[231]) /*AbstractArray::add*/;
-  /* Register variable[232]: Result */
-  variable[232] = NEW_ReduceAction229_parser___ReduceAction229___init() /*new ReduceAction229*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[232]) /*AbstractArray::add*/;
-  /* Register variable[233]: Result */
-  variable[233] = NEW_ReduceAction230_parser___ReduceAction230___init() /*new ReduceAction230*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[233]) /*AbstractArray::add*/;
-  /* Register variable[234]: Result */
-  variable[234] = NEW_ReduceAction231_parser___ReduceAction231___init() /*new ReduceAction231*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[234]) /*AbstractArray::add*/;
-  /* Register variable[235]: Result */
-  variable[235] = NEW_ReduceAction232_parser___ReduceAction232___init() /*new ReduceAction232*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[235]) /*AbstractArray::add*/;
-  /* Register variable[236]: Result */
-  variable[236] = NEW_ReduceAction233_parser___ReduceAction233___init() /*new ReduceAction233*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[236]) /*AbstractArray::add*/;
-  /* Register variable[237]: Result */
-  variable[237] = NEW_ReduceAction234_parser___ReduceAction234___init() /*new ReduceAction234*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[237]) /*AbstractArray::add*/;
-  /* Register variable[238]: Result */
-  variable[238] = NEW_ReduceAction235_parser___ReduceAction235___init() /*new ReduceAction235*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[238]) /*AbstractArray::add*/;
-  /* Register variable[239]: Result */
-  variable[239] = NEW_ReduceAction236_parser___ReduceAction236___init() /*new ReduceAction236*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[239]) /*AbstractArray::add*/;
-  /* Register variable[240]: Result */
-  variable[240] = NEW_ReduceAction237_parser___ReduceAction237___init() /*new ReduceAction237*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[240]) /*AbstractArray::add*/;
-  /* Register variable[241]: Result */
-  variable[241] = NEW_ReduceAction238_parser___ReduceAction238___init() /*new ReduceAction238*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[241]) /*AbstractArray::add*/;
-  /* Register variable[242]: Result */
-  variable[242] = NEW_ReduceAction239_parser___ReduceAction239___init() /*new ReduceAction239*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[242]) /*AbstractArray::add*/;
-  /* Register variable[243]: Result */
-  variable[243] = NEW_ReduceAction240_parser___ReduceAction240___init() /*new ReduceAction240*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[243]) /*AbstractArray::add*/;
-  /* Register variable[244]: Result */
-  variable[244] = NEW_ReduceAction241_parser___ReduceAction241___init() /*new ReduceAction241*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[244]) /*AbstractArray::add*/;
-  /* Register variable[245]: Result */
-  variable[245] = NEW_ReduceAction242_parser___ReduceAction242___init() /*new ReduceAction242*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[245]) /*AbstractArray::add*/;
-  /* Register variable[246]: Result */
-  variable[246] = NEW_ReduceAction243_parser___ReduceAction243___init() /*new ReduceAction243*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[246]) /*AbstractArray::add*/;
-  /* Register variable[247]: Result */
-  variable[247] = NEW_ReduceAction244_parser___ReduceAction244___init() /*new ReduceAction244*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[247]) /*AbstractArray::add*/;
-  /* Register variable[248]: Result */
-  variable[248] = NEW_ReduceAction245_parser___ReduceAction245___init() /*new ReduceAction245*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[248]) /*AbstractArray::add*/;
-  /* Register variable[249]: Result */
-  variable[249] = NEW_ReduceAction246_parser___ReduceAction246___init() /*new ReduceAction246*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[249]) /*AbstractArray::add*/;
-  /* Register variable[250]: Result */
-  variable[250] = NEW_ReduceAction247_parser___ReduceAction247___init() /*new ReduceAction247*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[250]) /*AbstractArray::add*/;
-  /* Register variable[251]: Result */
-  variable[251] = NEW_ReduceAction248_parser___ReduceAction248___init() /*new ReduceAction248*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[251]) /*AbstractArray::add*/;
-  /* Register variable[252]: Result */
-  variable[252] = NEW_ReduceAction249_parser___ReduceAction249___init() /*new ReduceAction249*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[252]) /*AbstractArray::add*/;
-  /* Register variable[253]: Result */
-  variable[253] = NEW_ReduceAction250_parser___ReduceAction250___init() /*new ReduceAction250*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[253]) /*AbstractArray::add*/;
-  /* Register variable[254]: Result */
-  variable[254] = NEW_ReduceAction251_parser___ReduceAction251___init() /*new ReduceAction251*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[254]) /*AbstractArray::add*/;
-  /* Register variable[255]: Result */
-  variable[255] = NEW_ReduceAction252_parser___ReduceAction252___init() /*new ReduceAction252*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[255]) /*AbstractArray::add*/;
-  /* Register variable[256]: Result */
-  variable[256] = NEW_ReduceAction253_parser___ReduceAction253___init() /*new ReduceAction253*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[256]) /*AbstractArray::add*/;
-  /* Register variable[257]: Result */
-  variable[257] = NEW_ReduceAction254_parser___ReduceAction254___init() /*new ReduceAction254*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[257]) /*AbstractArray::add*/;
-  /* Register variable[258]: Result */
-  variable[258] = NEW_ReduceAction255_parser___ReduceAction255___init() /*new ReduceAction255*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[258]) /*AbstractArray::add*/;
-  /* Register variable[259]: Result */
-  variable[259] = NEW_ReduceAction256_parser___ReduceAction256___init() /*new ReduceAction256*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[259]) /*AbstractArray::add*/;
-  /* Register variable[260]: Result */
-  variable[260] = NEW_ReduceAction257_parser___ReduceAction257___init() /*new ReduceAction257*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[260]) /*AbstractArray::add*/;
-  /* Register variable[261]: Result */
-  variable[261] = NEW_ReduceAction258_parser___ReduceAction258___init() /*new ReduceAction258*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[261]) /*AbstractArray::add*/;
-  /* Register variable[262]: Result */
-  variable[262] = NEW_ReduceAction259_parser___ReduceAction259___init() /*new ReduceAction259*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[262]) /*AbstractArray::add*/;
-  /* Register variable[263]: Result */
-  variable[263] = NEW_ReduceAction260_parser___ReduceAction260___init() /*new ReduceAction260*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[263]) /*AbstractArray::add*/;
-  /* Register variable[264]: Result */
-  variable[264] = NEW_ReduceAction261_parser___ReduceAction261___init() /*new ReduceAction261*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[264]) /*AbstractArray::add*/;
-  /* Register variable[265]: Result */
-  variable[265] = NEW_ReduceAction262_parser___ReduceAction262___init() /*new ReduceAction262*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[265]) /*AbstractArray::add*/;
-  /* Register variable[266]: Result */
-  variable[266] = NEW_ReduceAction263_parser___ReduceAction263___init() /*new ReduceAction263*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[266]) /*AbstractArray::add*/;
-  /* Register variable[267]: Result */
-  variable[267] = NEW_ReduceAction264_parser___ReduceAction264___init() /*new ReduceAction264*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[267]) /*AbstractArray::add*/;
-  /* Register variable[268]: Result */
-  variable[268] = NEW_ReduceAction265_parser___ReduceAction265___init() /*new ReduceAction265*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[268]) /*AbstractArray::add*/;
-  /* Register variable[269]: Result */
-  variable[269] = NEW_ReduceAction266_parser___ReduceAction266___init() /*new ReduceAction266*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[269]) /*AbstractArray::add*/;
-  /* Register variable[270]: Result */
-  variable[270] = NEW_ReduceAction267_parser___ReduceAction267___init() /*new ReduceAction267*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[270]) /*AbstractArray::add*/;
-  /* Register variable[271]: Result */
-  variable[271] = NEW_ReduceAction268_parser___ReduceAction268___init() /*new ReduceAction268*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[271]) /*AbstractArray::add*/;
-  /* Register variable[272]: Result */
-  variable[272] = NEW_ReduceAction269_parser___ReduceAction269___init() /*new ReduceAction269*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[272]) /*AbstractArray::add*/;
-  /* Register variable[273]: Result */
-  variable[273] = NEW_ReduceAction270_parser___ReduceAction270___init() /*new ReduceAction270*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[273]) /*AbstractArray::add*/;
-  /* Register variable[274]: Result */
-  variable[274] = NEW_ReduceAction271_parser___ReduceAction271___init() /*new ReduceAction271*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[274]) /*AbstractArray::add*/;
-  /* Register variable[275]: Result */
-  variable[275] = NEW_ReduceAction272_parser___ReduceAction272___init() /*new ReduceAction272*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[275]) /*AbstractArray::add*/;
-  /* Register variable[276]: Result */
-  variable[276] = NEW_ReduceAction273_parser___ReduceAction273___init() /*new ReduceAction273*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[276]) /*AbstractArray::add*/;
-  /* Register variable[277]: Result */
-  variable[277] = NEW_ReduceAction274_parser___ReduceAction274___init() /*new ReduceAction274*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[277]) /*AbstractArray::add*/;
-  /* Register variable[278]: Result */
-  variable[278] = NEW_ReduceAction275_parser___ReduceAction275___init() /*new ReduceAction275*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[278]) /*AbstractArray::add*/;
-  /* Register variable[279]: Result */
-  variable[279] = NEW_ReduceAction276_parser___ReduceAction276___init() /*new ReduceAction276*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[279]) /*AbstractArray::add*/;
-  /* Register variable[280]: Result */
-  variable[280] = NEW_ReduceAction277_parser___ReduceAction277___init() /*new ReduceAction277*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[280]) /*AbstractArray::add*/;
-  /* Register variable[281]: Result */
-  variable[281] = NEW_ReduceAction278_parser___ReduceAction278___init() /*new ReduceAction278*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[281]) /*AbstractArray::add*/;
-  /* Register variable[282]: Result */
-  variable[282] = NEW_ReduceAction279_parser___ReduceAction279___init() /*new ReduceAction279*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[282]) /*AbstractArray::add*/;
-  /* Register variable[283]: Result */
-  variable[283] = NEW_ReduceAction280_parser___ReduceAction280___init() /*new ReduceAction280*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[283]) /*AbstractArray::add*/;
-  /* Register variable[284]: Result */
-  variable[284] = NEW_ReduceAction281_parser___ReduceAction281___init() /*new ReduceAction281*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[284]) /*AbstractArray::add*/;
-  /* Register variable[285]: Result */
-  variable[285] = NEW_ReduceAction282_parser___ReduceAction282___init() /*new ReduceAction282*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[285]) /*AbstractArray::add*/;
-  /* Register variable[286]: Result */
-  variable[286] = NEW_ReduceAction283_parser___ReduceAction283___init() /*new ReduceAction283*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[286]) /*AbstractArray::add*/;
-  /* Register variable[287]: Result */
-  variable[287] = NEW_ReduceAction284_parser___ReduceAction284___init() /*new ReduceAction284*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[287]) /*AbstractArray::add*/;
-  /* Register variable[288]: Result */
-  variable[288] = NEW_ReduceAction285_parser___ReduceAction285___init() /*new ReduceAction285*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[288]) /*AbstractArray::add*/;
-  /* Register variable[289]: Result */
-  variable[289] = NEW_ReduceAction286_parser___ReduceAction286___init() /*new ReduceAction286*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[289]) /*AbstractArray::add*/;
-  /* Register variable[290]: Result */
-  variable[290] = NEW_ReduceAction287_parser___ReduceAction287___init() /*new ReduceAction287*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[290]) /*AbstractArray::add*/;
-  /* Register variable[291]: Result */
-  variable[291] = NEW_ReduceAction288_parser___ReduceAction288___init() /*new ReduceAction288*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[291]) /*AbstractArray::add*/;
-  /* Register variable[292]: Result */
-  variable[292] = NEW_ReduceAction289_parser___ReduceAction289___init() /*new ReduceAction289*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[292]) /*AbstractArray::add*/;
-  /* Register variable[293]: Result */
-  variable[293] = NEW_ReduceAction290_parser___ReduceAction290___init() /*new ReduceAction290*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[293]) /*AbstractArray::add*/;
-  /* Register variable[294]: Result */
-  variable[294] = NEW_ReduceAction291_parser___ReduceAction291___init() /*new ReduceAction291*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[294]) /*AbstractArray::add*/;
-  /* Register variable[295]: Result */
-  variable[295] = NEW_ReduceAction292_parser___ReduceAction292___init() /*new ReduceAction292*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[295]) /*AbstractArray::add*/;
-  /* Register variable[296]: Result */
-  variable[296] = NEW_ReduceAction293_parser___ReduceAction293___init() /*new ReduceAction293*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[296]) /*AbstractArray::add*/;
-  /* Register variable[297]: Result */
-  variable[297] = NEW_ReduceAction294_parser___ReduceAction294___init() /*new ReduceAction294*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[297]) /*AbstractArray::add*/;
-  /* Register variable[298]: Result */
-  variable[298] = NEW_ReduceAction295_parser___ReduceAction295___init() /*new ReduceAction295*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[298]) /*AbstractArray::add*/;
-  /* Register variable[299]: Result */
-  variable[299] = NEW_ReduceAction296_parser___ReduceAction296___init() /*new ReduceAction296*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[299]) /*AbstractArray::add*/;
-  /* Register variable[300]: Result */
-  variable[300] = NEW_ReduceAction297_parser___ReduceAction297___init() /*new ReduceAction297*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[300]) /*AbstractArray::add*/;
-  /* Register variable[301]: Result */
-  variable[301] = NEW_ReduceAction298_parser___ReduceAction298___init() /*new ReduceAction298*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[301]) /*AbstractArray::add*/;
-  /* Register variable[302]: Result */
-  variable[302] = NEW_ReduceAction299_parser___ReduceAction299___init() /*new ReduceAction299*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[302]) /*AbstractArray::add*/;
-  /* Register variable[303]: Result */
-  variable[303] = NEW_ReduceAction300_parser___ReduceAction300___init() /*new ReduceAction300*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[303]) /*AbstractArray::add*/;
-  /* Register variable[304]: Result */
-  variable[304] = NEW_ReduceAction301_parser___ReduceAction301___init() /*new ReduceAction301*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[304]) /*AbstractArray::add*/;
-  /* Register variable[305]: Result */
-  variable[305] = NEW_ReduceAction302_parser___ReduceAction302___init() /*new ReduceAction302*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[305]) /*AbstractArray::add*/;
-  /* Register variable[306]: Result */
-  variable[306] = NEW_ReduceAction303_parser___ReduceAction303___init() /*new ReduceAction303*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[306]) /*AbstractArray::add*/;
-  /* Register variable[307]: Result */
-  variable[307] = NEW_ReduceAction304_parser___ReduceAction304___init() /*new ReduceAction304*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[307]) /*AbstractArray::add*/;
-  /* Register variable[308]: Result */
-  variable[308] = NEW_ReduceAction305_parser___ReduceAction305___init() /*new ReduceAction305*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[308]) /*AbstractArray::add*/;
-  /* Register variable[309]: Result */
-  variable[309] = NEW_ReduceAction306_parser___ReduceAction306___init() /*new ReduceAction306*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[309]) /*AbstractArray::add*/;
-  /* Register variable[310]: Result */
-  variable[310] = NEW_ReduceAction307_parser___ReduceAction307___init() /*new ReduceAction307*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[310]) /*AbstractArray::add*/;
-  /* Register variable[311]: Result */
-  variable[311] = NEW_ReduceAction308_parser___ReduceAction308___init() /*new ReduceAction308*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[311]) /*AbstractArray::add*/;
-  /* Register variable[312]: Result */
-  variable[312] = NEW_ReduceAction309_parser___ReduceAction309___init() /*new ReduceAction309*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[312]) /*AbstractArray::add*/;
-  /* Register variable[313]: Result */
-  variable[313] = NEW_ReduceAction310_parser___ReduceAction310___init() /*new ReduceAction310*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[313]) /*AbstractArray::add*/;
-  /* Register variable[314]: Result */
-  variable[314] = NEW_ReduceAction311_parser___ReduceAction311___init() /*new ReduceAction311*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[314]) /*AbstractArray::add*/;
-  /* Register variable[315]: Result */
-  variable[315] = NEW_ReduceAction312_parser___ReduceAction312___init() /*new ReduceAction312*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[315]) /*AbstractArray::add*/;
-  /* Register variable[316]: Result */
-  variable[316] = NEW_ReduceAction313_parser___ReduceAction313___init() /*new ReduceAction313*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[316]) /*AbstractArray::add*/;
-  /* Register variable[317]: Result */
-  variable[317] = NEW_ReduceAction314_parser___ReduceAction314___init() /*new ReduceAction314*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[317]) /*AbstractArray::add*/;
-  /* Register variable[318]: Result */
-  variable[318] = NEW_ReduceAction315_parser___ReduceAction315___init() /*new ReduceAction315*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[318]) /*AbstractArray::add*/;
-  /* Register variable[319]: Result */
-  variable[319] = NEW_ReduceAction316_parser___ReduceAction316___init() /*new ReduceAction316*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[319]) /*AbstractArray::add*/;
-  /* Register variable[320]: Result */
-  variable[320] = NEW_ReduceAction317_parser___ReduceAction317___init() /*new ReduceAction317*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[320]) /*AbstractArray::add*/;
-  /* Register variable[321]: Result */
-  variable[321] = NEW_ReduceAction318_parser___ReduceAction318___init() /*new ReduceAction318*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[321]) /*AbstractArray::add*/;
-  /* Register variable[322]: Result */
-  variable[322] = NEW_ReduceAction319_parser___ReduceAction319___init() /*new ReduceAction319*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[322]) /*AbstractArray::add*/;
-  /* Register variable[323]: Result */
-  variable[323] = NEW_ReduceAction320_parser___ReduceAction320___init() /*new ReduceAction320*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[323]) /*AbstractArray::add*/;
-  /* Register variable[324]: Result */
-  variable[324] = NEW_ReduceAction321_parser___ReduceAction321___init() /*new ReduceAction321*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[324]) /*AbstractArray::add*/;
-  /* Register variable[325]: Result */
-  variable[325] = NEW_ReduceAction322_parser___ReduceAction322___init() /*new ReduceAction322*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[325]) /*AbstractArray::add*/;
-  /* Register variable[326]: Result */
-  variable[326] = NEW_ReduceAction323_parser___ReduceAction323___init() /*new ReduceAction323*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[326]) /*AbstractArray::add*/;
-  /* Register variable[327]: Result */
-  variable[327] = NEW_ReduceAction324_parser___ReduceAction324___init() /*new ReduceAction324*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[327]) /*AbstractArray::add*/;
-  /* Register variable[328]: Result */
-  variable[328] = NEW_ReduceAction325_parser___ReduceAction325___init() /*new ReduceAction325*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[328]) /*AbstractArray::add*/;
-  /* Register variable[329]: Result */
-  variable[329] = NEW_ReduceAction326_parser___ReduceAction326___init() /*new ReduceAction326*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[329]) /*AbstractArray::add*/;
-  /* Register variable[330]: Result */
-  variable[330] = NEW_ReduceAction327_parser___ReduceAction327___init() /*new ReduceAction327*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[330]) /*AbstractArray::add*/;
-  /* Register variable[331]: Result */
-  variable[331] = NEW_ReduceAction328_parser___ReduceAction328___init() /*new ReduceAction328*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[331]) /*AbstractArray::add*/;
-  /* Register variable[332]: Result */
-  variable[332] = NEW_ReduceAction329_parser___ReduceAction329___init() /*new ReduceAction329*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[332]) /*AbstractArray::add*/;
-  /* Register variable[333]: Result */
-  variable[333] = NEW_ReduceAction330_parser___ReduceAction330___init() /*new ReduceAction330*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[333]) /*AbstractArray::add*/;
-  /* Register variable[334]: Result */
-  variable[334] = NEW_ReduceAction331_parser___ReduceAction331___init() /*new ReduceAction331*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[334]) /*AbstractArray::add*/;
-  /* Register variable[335]: Result */
-  variable[335] = NEW_ReduceAction332_parser___ReduceAction332___init() /*new ReduceAction332*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[335]) /*AbstractArray::add*/;
-  /* Register variable[336]: Result */
-  variable[336] = NEW_ReduceAction333_parser___ReduceAction333___init() /*new ReduceAction333*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[336]) /*AbstractArray::add*/;
-  /* Register variable[337]: Result */
-  variable[337] = NEW_ReduceAction334_parser___ReduceAction334___init() /*new ReduceAction334*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[337]) /*AbstractArray::add*/;
-  /* Register variable[338]: Result */
-  variable[338] = NEW_ReduceAction335_parser___ReduceAction335___init() /*new ReduceAction335*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[338]) /*AbstractArray::add*/;
-  /* Register variable[339]: Result */
-  variable[339] = NEW_ReduceAction336_parser___ReduceAction336___init() /*new ReduceAction336*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[339]) /*AbstractArray::add*/;
-  /* Register variable[340]: Result */
-  variable[340] = NEW_ReduceAction337_parser___ReduceAction337___init() /*new ReduceAction337*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[340]) /*AbstractArray::add*/;
-  /* Register variable[341]: Result */
-  variable[341] = NEW_ReduceAction338_parser___ReduceAction338___init() /*new ReduceAction338*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[341]) /*AbstractArray::add*/;
-  /* Register variable[342]: Result */
-  variable[342] = NEW_ReduceAction339_parser___ReduceAction339___init() /*new ReduceAction339*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[342]) /*AbstractArray::add*/;
-  /* Register variable[343]: Result */
-  variable[343] = NEW_ReduceAction340_parser___ReduceAction340___init() /*new ReduceAction340*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[343]) /*AbstractArray::add*/;
-  /* Register variable[344]: Result */
-  variable[344] = NEW_ReduceAction341_parser___ReduceAction341___init() /*new ReduceAction341*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[344]) /*AbstractArray::add*/;
-  /* Register variable[345]: Result */
-  variable[345] = NEW_ReduceAction342_parser___ReduceAction342___init() /*new ReduceAction342*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[345]) /*AbstractArray::add*/;
-  /* Register variable[346]: Result */
-  variable[346] = NEW_ReduceAction343_parser___ReduceAction343___init() /*new ReduceAction343*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[346]) /*AbstractArray::add*/;
-  /* Register variable[347]: Result */
-  variable[347] = NEW_ReduceAction344_parser___ReduceAction344___init() /*new ReduceAction344*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[347]) /*AbstractArray::add*/;
-  /* Register variable[348]: Result */
-  variable[348] = NEW_ReduceAction345_parser___ReduceAction345___init() /*new ReduceAction345*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[348]) /*AbstractArray::add*/;
-  /* Register variable[349]: Result */
-  variable[349] = NEW_ReduceAction346_parser___ReduceAction346___init() /*new ReduceAction346*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[349]) /*AbstractArray::add*/;
-  /* Register variable[350]: Result */
-  variable[350] = NEW_ReduceAction347_parser___ReduceAction347___init() /*new ReduceAction347*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[350]) /*AbstractArray::add*/;
-  /* Register variable[351]: Result */
-  variable[351] = NEW_ReduceAction348_parser___ReduceAction348___init() /*new ReduceAction348*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[351]) /*AbstractArray::add*/;
-  /* Register variable[352]: Result */
-  variable[352] = NEW_ReduceAction349_parser___ReduceAction349___init() /*new ReduceAction349*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[352]) /*AbstractArray::add*/;
-  /* Register variable[353]: Result */
-  variable[353] = NEW_ReduceAction350_parser___ReduceAction350___init() /*new ReduceAction350*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[353]) /*AbstractArray::add*/;
-  /* Register variable[354]: Result */
-  variable[354] = NEW_ReduceAction351_parser___ReduceAction351___init() /*new ReduceAction351*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[354]) /*AbstractArray::add*/;
-  /* Register variable[355]: Result */
-  variable[355] = NEW_ReduceAction352_parser___ReduceAction352___init() /*new ReduceAction352*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[355]) /*AbstractArray::add*/;
-  /* Register variable[356]: Result */
-  variable[356] = NEW_ReduceAction353_parser___ReduceAction353___init() /*new ReduceAction353*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[356]) /*AbstractArray::add*/;
-  /* Register variable[357]: Result */
-  variable[357] = NEW_ReduceAction354_parser___ReduceAction354___init() /*new ReduceAction354*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[357]) /*AbstractArray::add*/;
-  /* Register variable[358]: Result */
-  variable[358] = NEW_ReduceAction355_parser___ReduceAction355___init() /*new ReduceAction355*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[358]) /*AbstractArray::add*/;
-  /* Register variable[359]: Result */
-  variable[359] = NEW_ReduceAction356_parser___ReduceAction356___init() /*new ReduceAction356*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[359]) /*AbstractArray::add*/;
-  /* Register variable[360]: Result */
-  variable[360] = NEW_ReduceAction357_parser___ReduceAction357___init() /*new ReduceAction357*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[360]) /*AbstractArray::add*/;
-  /* Register variable[361]: Result */
-  variable[361] = NEW_ReduceAction358_parser___ReduceAction358___init() /*new ReduceAction358*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[361]) /*AbstractArray::add*/;
-  /* Register variable[362]: Result */
-  variable[362] = NEW_ReduceAction359_parser___ReduceAction359___init() /*new ReduceAction359*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[362]) /*AbstractArray::add*/;
-  /* Register variable[363]: Result */
-  variable[363] = NEW_ReduceAction360_parser___ReduceAction360___init() /*new ReduceAction360*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[363]) /*AbstractArray::add*/;
-  /* Register variable[364]: Result */
-  variable[364] = NEW_ReduceAction361_parser___ReduceAction361___init() /*new ReduceAction361*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[364]) /*AbstractArray::add*/;
-  /* Register variable[365]: Result */
-  variable[365] = NEW_ReduceAction362_parser___ReduceAction362___init() /*new ReduceAction362*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[365]) /*AbstractArray::add*/;
-  /* Register variable[366]: Result */
-  variable[366] = NEW_ReduceAction363_parser___ReduceAction363___init() /*new ReduceAction363*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[366]) /*AbstractArray::add*/;
-  /* Register variable[367]: Result */
-  variable[367] = NEW_ReduceAction364_parser___ReduceAction364___init() /*new ReduceAction364*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[367]) /*AbstractArray::add*/;
-  /* Register variable[368]: Result */
-  variable[368] = NEW_ReduceAction365_parser___ReduceAction365___init() /*new ReduceAction365*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[368]) /*AbstractArray::add*/;
-  /* Register variable[369]: Result */
-  variable[369] = NEW_ReduceAction366_parser___ReduceAction366___init() /*new ReduceAction366*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[369]) /*AbstractArray::add*/;
-  /* Register variable[370]: Result */
-  variable[370] = NEW_ReduceAction367_parser___ReduceAction367___init() /*new ReduceAction367*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[370]) /*AbstractArray::add*/;
-  /* Register variable[371]: Result */
-  variable[371] = NEW_ReduceAction368_parser___ReduceAction368___init() /*new ReduceAction368*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[371]) /*AbstractArray::add*/;
-  /* Register variable[372]: Result */
-  variable[372] = NEW_ReduceAction369_parser___ReduceAction369___init() /*new ReduceAction369*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[372]) /*AbstractArray::add*/;
-  /* Register variable[373]: Result */
-  variable[373] = NEW_ReduceAction370_parser___ReduceAction370___init() /*new ReduceAction370*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[373]) /*AbstractArray::add*/;
-  /* Register variable[374]: Result */
-  variable[374] = NEW_ReduceAction371_parser___ReduceAction371___init() /*new ReduceAction371*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[374]) /*AbstractArray::add*/;
-  /* Register variable[375]: Result */
-  variable[375] = NEW_ReduceAction372_parser___ReduceAction372___init() /*new ReduceAction372*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[375]) /*AbstractArray::add*/;
-  /* Register variable[376]: Result */
-  variable[376] = NEW_ReduceAction373_parser___ReduceAction373___init() /*new ReduceAction373*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[376]) /*AbstractArray::add*/;
-  /* Register variable[377]: Result */
-  variable[377] = NEW_ReduceAction374_parser___ReduceAction374___init() /*new ReduceAction374*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[377]) /*AbstractArray::add*/;
-  /* Register variable[378]: Result */
-  variable[378] = NEW_ReduceAction375_parser___ReduceAction375___init() /*new ReduceAction375*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[378]) /*AbstractArray::add*/;
-  /* Register variable[379]: Result */
-  variable[379] = NEW_ReduceAction376_parser___ReduceAction376___init() /*new ReduceAction376*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[379]) /*AbstractArray::add*/;
-  /* Register variable[380]: Result */
-  variable[380] = NEW_ReduceAction377_parser___ReduceAction377___init() /*new ReduceAction377*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[380]) /*AbstractArray::add*/;
-  /* Register variable[381]: Result */
-  variable[381] = NEW_ReduceAction378_parser___ReduceAction378___init() /*new ReduceAction378*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[381]) /*AbstractArray::add*/;
-  /* Register variable[382]: Result */
-  variable[382] = NEW_ReduceAction379_parser___ReduceAction379___init() /*new ReduceAction379*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[382]) /*AbstractArray::add*/;
-  /* Register variable[383]: Result */
-  variable[383] = NEW_ReduceAction380_parser___ReduceAction380___init() /*new ReduceAction380*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[383]) /*AbstractArray::add*/;
-  /* Register variable[384]: Result */
-  variable[384] = NEW_ReduceAction381_parser___ReduceAction381___init() /*new ReduceAction381*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[384]) /*AbstractArray::add*/;
-  /* Register variable[385]: Result */
-  variable[385] = NEW_ReduceAction382_parser___ReduceAction382___init() /*new ReduceAction382*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[385]) /*AbstractArray::add*/;
-  /* Register variable[386]: Result */
-  variable[386] = NEW_ReduceAction383_parser___ReduceAction383___init() /*new ReduceAction383*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[386]) /*AbstractArray::add*/;
-  /* Register variable[387]: Result */
-  variable[387] = NEW_ReduceAction384_parser___ReduceAction384___init() /*new ReduceAction384*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[387]) /*AbstractArray::add*/;
-  /* Register variable[388]: Result */
-  variable[388] = NEW_ReduceAction385_parser___ReduceAction385___init() /*new ReduceAction385*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[388]) /*AbstractArray::add*/;
-  /* Register variable[389]: Result */
-  variable[389] = NEW_ReduceAction386_parser___ReduceAction386___init() /*new ReduceAction386*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[389]) /*AbstractArray::add*/;
-  /* Register variable[390]: Result */
-  variable[390] = NEW_ReduceAction387_parser___ReduceAction387___init() /*new ReduceAction387*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[390]) /*AbstractArray::add*/;
-  /* Register variable[391]: Result */
-  variable[391] = NEW_ReduceAction388_parser___ReduceAction388___init() /*new ReduceAction388*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[391]) /*AbstractArray::add*/;
-  /* Register variable[392]: Result */
-  variable[392] = NEW_ReduceAction389_parser___ReduceAction389___init() /*new ReduceAction389*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[392]) /*AbstractArray::add*/;
-  /* Register variable[393]: Result */
-  variable[393] = NEW_ReduceAction390_parser___ReduceAction390___init() /*new ReduceAction390*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[393]) /*AbstractArray::add*/;
-  /* Register variable[394]: Result */
-  variable[394] = NEW_ReduceAction391_parser___ReduceAction391___init() /*new ReduceAction391*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[394]) /*AbstractArray::add*/;
-  /* Register variable[395]: Result */
-  variable[395] = NEW_ReduceAction392_parser___ReduceAction392___init() /*new ReduceAction392*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[395]) /*AbstractArray::add*/;
-  /* Register variable[396]: Result */
-  variable[396] = NEW_ReduceAction393_parser___ReduceAction393___init() /*new ReduceAction393*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[396]) /*AbstractArray::add*/;
-  /* Register variable[397]: Result */
-  variable[397] = NEW_ReduceAction394_parser___ReduceAction394___init() /*new ReduceAction394*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[397]) /*AbstractArray::add*/;
-  /* Register variable[398]: Result */
-  variable[398] = NEW_ReduceAction395_parser___ReduceAction395___init() /*new ReduceAction395*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[398]) /*AbstractArray::add*/;
-  /* Register variable[399]: Result */
-  variable[399] = NEW_ReduceAction396_parser___ReduceAction396___init() /*new ReduceAction396*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[399]) /*AbstractArray::add*/;
-  /* Register variable[400]: Result */
-  variable[400] = NEW_ReduceAction397_parser___ReduceAction397___init() /*new ReduceAction397*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[400]) /*AbstractArray::add*/;
-  /* Register variable[401]: Result */
-  variable[401] = NEW_ReduceAction398_parser___ReduceAction398___init() /*new ReduceAction398*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[401]) /*AbstractArray::add*/;
-  /* Register variable[402]: Result */
-  variable[402] = NEW_ReduceAction399_parser___ReduceAction399___init() /*new ReduceAction399*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[402]) /*AbstractArray::add*/;
-  /* Register variable[403]: Result */
-  variable[403] = NEW_ReduceAction400_parser___ReduceAction400___init() /*new ReduceAction400*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[403]) /*AbstractArray::add*/;
-  /* Register variable[404]: Result */
-  variable[404] = NEW_ReduceAction401_parser___ReduceAction401___init() /*new ReduceAction401*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[404]) /*AbstractArray::add*/;
-  /* Register variable[405]: Result */
-  variable[405] = NEW_ReduceAction402_parser___ReduceAction402___init() /*new ReduceAction402*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[405]) /*AbstractArray::add*/;
-  /* Register variable[406]: Result */
-  variable[406] = NEW_ReduceAction403_parser___ReduceAction403___init() /*new ReduceAction403*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[406]) /*AbstractArray::add*/;
-  /* Register variable[407]: Result */
-  variable[407] = NEW_ReduceAction404_parser___ReduceAction404___init() /*new ReduceAction404*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[407]) /*AbstractArray::add*/;
-  /* Register variable[408]: Result */
-  variable[408] = NEW_ReduceAction405_parser___ReduceAction405___init() /*new ReduceAction405*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[408]) /*AbstractArray::add*/;
-  /* Register variable[409]: Result */
-  variable[409] = NEW_ReduceAction406_parser___ReduceAction406___init() /*new ReduceAction406*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[409]) /*AbstractArray::add*/;
-  /* Register variable[410]: Result */
-  variable[410] = NEW_ReduceAction407_parser___ReduceAction407___init() /*new ReduceAction407*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[410]) /*AbstractArray::add*/;
-  /* Register variable[411]: Result */
-  variable[411] = NEW_ReduceAction408_parser___ReduceAction408___init() /*new ReduceAction408*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[411]) /*AbstractArray::add*/;
-  /* Register variable[412]: Result */
-  variable[412] = NEW_ReduceAction409_parser___ReduceAction409___init() /*new ReduceAction409*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[412]) /*AbstractArray::add*/;
-  /* Register variable[413]: Result */
-  variable[413] = NEW_ReduceAction410_parser___ReduceAction410___init() /*new ReduceAction410*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[413]) /*AbstractArray::add*/;
-  /* Register variable[414]: Result */
-  variable[414] = NEW_ReduceAction411_parser___ReduceAction411___init() /*new ReduceAction411*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[414]) /*AbstractArray::add*/;
-  /* Register variable[415]: Result */
-  variable[415] = NEW_ReduceAction412_parser___ReduceAction412___init() /*new ReduceAction412*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[415]) /*AbstractArray::add*/;
-  /* Register variable[416]: Result */
-  variable[416] = NEW_ReduceAction413_parser___ReduceAction413___init() /*new ReduceAction413*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[416]) /*AbstractArray::add*/;
-  /* Register variable[417]: Result */
-  variable[417] = NEW_ReduceAction414_parser___ReduceAction414___init() /*new ReduceAction414*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[417]) /*AbstractArray::add*/;
-  /* Register variable[418]: Result */
-  variable[418] = NEW_ReduceAction415_parser___ReduceAction415___init() /*new ReduceAction415*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[418]) /*AbstractArray::add*/;
-  /* Register variable[419]: Result */
-  variable[419] = NEW_ReduceAction416_parser___ReduceAction416___init() /*new ReduceAction416*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[419]) /*AbstractArray::add*/;
-  /* Register variable[420]: Result */
-  variable[420] = NEW_ReduceAction417_parser___ReduceAction417___init() /*new ReduceAction417*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[420]) /*AbstractArray::add*/;
-  /* Register variable[421]: Result */
-  variable[421] = NEW_ReduceAction418_parser___ReduceAction418___init() /*new ReduceAction418*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[421]) /*AbstractArray::add*/;
-  /* Register variable[422]: Result */
-  variable[422] = NEW_ReduceAction419_parser___ReduceAction419___init() /*new ReduceAction419*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[422]) /*AbstractArray::add*/;
-  /* Register variable[423]: Result */
-  variable[423] = NEW_ReduceAction420_parser___ReduceAction420___init() /*new ReduceAction420*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[423]) /*AbstractArray::add*/;
-  /* Register variable[424]: Result */
-  variable[424] = NEW_ReduceAction421_parser___ReduceAction421___init() /*new ReduceAction421*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[424]) /*AbstractArray::add*/;
-  /* Register variable[425]: Result */
-  variable[425] = NEW_ReduceAction422_parser___ReduceAction422___init() /*new ReduceAction422*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[425]) /*AbstractArray::add*/;
-  /* Register variable[426]: Result */
-  variable[426] = NEW_ReduceAction423_parser___ReduceAction423___init() /*new ReduceAction423*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[426]) /*AbstractArray::add*/;
-  /* Register variable[427]: Result */
-  variable[427] = NEW_ReduceAction424_parser___ReduceAction424___init() /*new ReduceAction424*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[427]) /*AbstractArray::add*/;
-  /* Register variable[428]: Result */
-  variable[428] = NEW_ReduceAction425_parser___ReduceAction425___init() /*new ReduceAction425*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[428]) /*AbstractArray::add*/;
-  /* Register variable[429]: Result */
-  variable[429] = NEW_ReduceAction426_parser___ReduceAction426___init() /*new ReduceAction426*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[429]) /*AbstractArray::add*/;
-  /* Register variable[430]: Result */
-  variable[430] = NEW_ReduceAction427_parser___ReduceAction427___init() /*new ReduceAction427*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[430]) /*AbstractArray::add*/;
-  /* Register variable[431]: Result */
-  variable[431] = NEW_ReduceAction428_parser___ReduceAction428___init() /*new ReduceAction428*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[431]) /*AbstractArray::add*/;
-  /* Register variable[432]: Result */
-  variable[432] = NEW_ReduceAction429_parser___ReduceAction429___init() /*new ReduceAction429*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[432]) /*AbstractArray::add*/;
-  /* Register variable[433]: Result */
-  variable[433] = NEW_ReduceAction430_parser___ReduceAction430___init() /*new ReduceAction430*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[433]) /*AbstractArray::add*/;
-  /* Register variable[434]: Result */
-  variable[434] = NEW_ReduceAction431_parser___ReduceAction431___init() /*new ReduceAction431*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[434]) /*AbstractArray::add*/;
-  /* Register variable[435]: Result */
-  variable[435] = NEW_ReduceAction432_parser___ReduceAction432___init() /*new ReduceAction432*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[435]) /*AbstractArray::add*/;
-  /* Register variable[436]: Result */
-  variable[436] = NEW_ReduceAction433_parser___ReduceAction433___init() /*new ReduceAction433*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[436]) /*AbstractArray::add*/;
-  /* Register variable[437]: Result */
-  variable[437] = NEW_ReduceAction434_parser___ReduceAction434___init() /*new ReduceAction434*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[437]) /*AbstractArray::add*/;
-  /* Register variable[438]: Result */
-  variable[438] = NEW_ReduceAction435_parser___ReduceAction435___init() /*new ReduceAction435*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[438]) /*AbstractArray::add*/;
-  /* Register variable[439]: Result */
-  variable[439] = NEW_ReduceAction436_parser___ReduceAction436___init() /*new ReduceAction436*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[439]) /*AbstractArray::add*/;
-  /* Register variable[440]: Result */
-  variable[440] = NEW_ReduceAction437_parser___ReduceAction437___init() /*new ReduceAction437*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[440]) /*AbstractArray::add*/;
-  /* Register variable[441]: Result */
-  variable[441] = NEW_ReduceAction438_parser___ReduceAction438___init() /*new ReduceAction438*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[441]) /*AbstractArray::add*/;
-  /* Register variable[442]: Result */
-  variable[442] = NEW_ReduceAction439_parser___ReduceAction439___init() /*new ReduceAction439*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[442]) /*AbstractArray::add*/;
-  /* Register variable[443]: Result */
-  variable[443] = NEW_ReduceAction440_parser___ReduceAction440___init() /*new ReduceAction440*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[443]) /*AbstractArray::add*/;
-  /* Register variable[444]: Result */
-  variable[444] = NEW_ReduceAction441_parser___ReduceAction441___init() /*new ReduceAction441*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[444]) /*AbstractArray::add*/;
-  /* Register variable[445]: Result */
-  variable[445] = NEW_ReduceAction442_parser___ReduceAction442___init() /*new ReduceAction442*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[445]) /*AbstractArray::add*/;
-  /* Register variable[446]: Result */
-  variable[446] = NEW_ReduceAction443_parser___ReduceAction443___init() /*new ReduceAction443*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[446]) /*AbstractArray::add*/;
-  /* Register variable[447]: Result */
-  variable[447] = NEW_ReduceAction444_parser___ReduceAction444___init() /*new ReduceAction444*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[447]) /*AbstractArray::add*/;
-  /* Register variable[448]: Result */
-  variable[448] = NEW_ReduceAction445_parser___ReduceAction445___init() /*new ReduceAction445*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[448]) /*AbstractArray::add*/;
-  /* Register variable[449]: Result */
-  variable[449] = NEW_ReduceAction446_parser___ReduceAction446___init() /*new ReduceAction446*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[449]) /*AbstractArray::add*/;
-  /* Register variable[450]: Result */
-  variable[450] = NEW_ReduceAction447_parser___ReduceAction447___init() /*new ReduceAction447*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[450]) /*AbstractArray::add*/;
-  /* Register variable[451]: Result */
-  variable[451] = NEW_ReduceAction448_parser___ReduceAction448___init() /*new ReduceAction448*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[451]) /*AbstractArray::add*/;
-  /* Register variable[452]: Result */
-  variable[452] = NEW_ReduceAction449_parser___ReduceAction449___init() /*new ReduceAction449*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[452]) /*AbstractArray::add*/;
-  /* Register variable[453]: Result */
-  variable[453] = NEW_ReduceAction450_parser___ReduceAction450___init() /*new ReduceAction450*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[453]) /*AbstractArray::add*/;
-  /* Register variable[454]: Result */
-  variable[454] = NEW_ReduceAction451_parser___ReduceAction451___init() /*new ReduceAction451*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[454]) /*AbstractArray::add*/;
-  /* Register variable[455]: Result */
-  variable[455] = NEW_ReduceAction452_parser___ReduceAction452___init() /*new ReduceAction452*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[455]) /*AbstractArray::add*/;
-  /* Register variable[456]: Result */
-  variable[456] = NEW_ReduceAction453_parser___ReduceAction453___init() /*new ReduceAction453*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[456]) /*AbstractArray::add*/;
-  /* Register variable[457]: Result */
-  variable[457] = NEW_ReduceAction454_parser___ReduceAction454___init() /*new ReduceAction454*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[457]) /*AbstractArray::add*/;
-  /* Register variable[458]: Result */
-  variable[458] = NEW_ReduceAction455_parser___ReduceAction455___init() /*new ReduceAction455*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[458]) /*AbstractArray::add*/;
-  /* Register variable[459]: Result */
-  variable[459] = NEW_ReduceAction456_parser___ReduceAction456___init() /*new ReduceAction456*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[459]) /*AbstractArray::add*/;
-  /* Register variable[460]: Result */
-  variable[460] = NEW_ReduceAction457_parser___ReduceAction457___init() /*new ReduceAction457*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[460]) /*AbstractArray::add*/;
-  /* Register variable[461]: Result */
-  variable[461] = NEW_ReduceAction458_parser___ReduceAction458___init() /*new ReduceAction458*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[461]) /*AbstractArray::add*/;
-  /* Register variable[462]: Result */
-  variable[462] = NEW_ReduceAction459_parser___ReduceAction459___init() /*new ReduceAction459*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[462]) /*AbstractArray::add*/;
-  /* Register variable[463]: Result */
-  variable[463] = NEW_ReduceAction460_parser___ReduceAction460___init() /*new ReduceAction460*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[463]) /*AbstractArray::add*/;
-  /* Register variable[464]: Result */
-  variable[464] = NEW_ReduceAction461_parser___ReduceAction461___init() /*new ReduceAction461*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[464]) /*AbstractArray::add*/;
-  /* Register variable[465]: Result */
-  variable[465] = NEW_ReduceAction462_parser___ReduceAction462___init() /*new ReduceAction462*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[465]) /*AbstractArray::add*/;
-  /* Register variable[466]: Result */
-  variable[466] = NEW_ReduceAction463_parser___ReduceAction463___init() /*new ReduceAction463*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[466]) /*AbstractArray::add*/;
-  /* Register variable[467]: Result */
-  variable[467] = NEW_ReduceAction464_parser___ReduceAction464___init() /*new ReduceAction464*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[467]) /*AbstractArray::add*/;
-  /* Register variable[468]: Result */
-  variable[468] = NEW_ReduceAction465_parser___ReduceAction465___init() /*new ReduceAction465*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[468]) /*AbstractArray::add*/;
-  /* Register variable[469]: Result */
-  variable[469] = NEW_ReduceAction466_parser___ReduceAction466___init() /*new ReduceAction466*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[469]) /*AbstractArray::add*/;
-  /* Register variable[470]: Result */
-  variable[470] = NEW_ReduceAction467_parser___ReduceAction467___init() /*new ReduceAction467*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[470]) /*AbstractArray::add*/;
-  /* Register variable[471]: Result */
-  variable[471] = NEW_ReduceAction468_parser___ReduceAction468___init() /*new ReduceAction468*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[471]) /*AbstractArray::add*/;
-  /* Register variable[472]: Result */
-  variable[472] = NEW_ReduceAction469_parser___ReduceAction469___init() /*new ReduceAction469*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[472]) /*AbstractArray::add*/;
-  /* Register variable[473]: Result */
-  variable[473] = NEW_ReduceAction470_parser___ReduceAction470___init() /*new ReduceAction470*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[473]) /*AbstractArray::add*/;
-  /* Register variable[474]: Result */
-  variable[474] = NEW_ReduceAction471_parser___ReduceAction471___init() /*new ReduceAction471*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[474]) /*AbstractArray::add*/;
-  /* Register variable[475]: Result */
-  variable[475] = NEW_ReduceAction472_parser___ReduceAction472___init() /*new ReduceAction472*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[475]) /*AbstractArray::add*/;
-  /* Register variable[476]: Result */
-  variable[476] = NEW_ReduceAction473_parser___ReduceAction473___init() /*new ReduceAction473*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[476]) /*AbstractArray::add*/;
-  /* Register variable[477]: Result */
-  variable[477] = NEW_ReduceAction474_parser___ReduceAction474___init() /*new ReduceAction474*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[477]) /*AbstractArray::add*/;
-  /* Register variable[478]: Result */
-  variable[478] = NEW_ReduceAction475_parser___ReduceAction475___init() /*new ReduceAction475*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[478]) /*AbstractArray::add*/;
-  /* Register variable[479]: Result */
-  variable[479] = NEW_ReduceAction476_parser___ReduceAction476___init() /*new ReduceAction476*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[479]) /*AbstractArray::add*/;
-  /* Register variable[480]: Result */
-  variable[480] = NEW_ReduceAction477_parser___ReduceAction477___init() /*new ReduceAction477*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[480]) /*AbstractArray::add*/;
-  /* Register variable[481]: Result */
-  variable[481] = NEW_ReduceAction478_parser___ReduceAction478___init() /*new ReduceAction478*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[481]) /*AbstractArray::add*/;
-  /* Register variable[482]: Result */
-  variable[482] = NEW_ReduceAction479_parser___ReduceAction479___init() /*new ReduceAction479*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[482]) /*AbstractArray::add*/;
-  /* Register variable[483]: Result */
-  variable[483] = NEW_ReduceAction480_parser___ReduceAction480___init() /*new ReduceAction480*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[483]) /*AbstractArray::add*/;
-  /* Register variable[484]: Result */
-  variable[484] = NEW_ReduceAction481_parser___ReduceAction481___init() /*new ReduceAction481*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[484]) /*AbstractArray::add*/;
-  /* Register variable[485]: Result */
-  variable[485] = NEW_ReduceAction482_parser___ReduceAction482___init() /*new ReduceAction482*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[485]) /*AbstractArray::add*/;
-  /* Register variable[486]: Result */
-  variable[486] = NEW_ReduceAction483_parser___ReduceAction483___init() /*new ReduceAction483*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[486]) /*AbstractArray::add*/;
-  /* Register variable[487]: Result */
-  variable[487] = NEW_ReduceAction484_parser___ReduceAction484___init() /*new ReduceAction484*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[487]) /*AbstractArray::add*/;
-  /* Register variable[488]: Result */
-  variable[488] = NEW_ReduceAction485_parser___ReduceAction485___init() /*new ReduceAction485*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[488]) /*AbstractArray::add*/;
-  /* Register variable[489]: Result */
-  variable[489] = NEW_ReduceAction486_parser___ReduceAction486___init() /*new ReduceAction486*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[489]) /*AbstractArray::add*/;
-  /* Register variable[490]: Result */
-  variable[490] = NEW_ReduceAction487_parser___ReduceAction487___init() /*new ReduceAction487*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[490]) /*AbstractArray::add*/;
-  /* Register variable[491]: Result */
-  variable[491] = NEW_ReduceAction488_parser___ReduceAction488___init() /*new ReduceAction488*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[491]) /*AbstractArray::add*/;
-  /* Register variable[492]: Result */
-  variable[492] = NEW_ReduceAction489_parser___ReduceAction489___init() /*new ReduceAction489*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[492]) /*AbstractArray::add*/;
-  /* Register variable[493]: Result */
-  variable[493] = NEW_ReduceAction490_parser___ReduceAction490___init() /*new ReduceAction490*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[493]) /*AbstractArray::add*/;
-  /* Register variable[494]: Result */
-  variable[494] = NEW_ReduceAction491_parser___ReduceAction491___init() /*new ReduceAction491*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[494]) /*AbstractArray::add*/;
-  /* Register variable[495]: Result */
-  variable[495] = NEW_ReduceAction492_parser___ReduceAction492___init() /*new ReduceAction492*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[495]) /*AbstractArray::add*/;
-  /* Register variable[496]: Result */
-  variable[496] = NEW_ReduceAction493_parser___ReduceAction493___init() /*new ReduceAction493*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[496]) /*AbstractArray::add*/;
-  /* Register variable[497]: Result */
-  variable[497] = NEW_ReduceAction494_parser___ReduceAction494___init() /*new ReduceAction494*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[497]) /*AbstractArray::add*/;
-  /* Register variable[498]: Result */
-  variable[498] = NEW_ReduceAction495_parser___ReduceAction495___init() /*new ReduceAction495*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[498]) /*AbstractArray::add*/;
-  /* Register variable[499]: Result */
-  variable[499] = NEW_ReduceAction496_parser___ReduceAction496___init() /*new ReduceAction496*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[499]) /*AbstractArray::add*/;
-  /* Register variable[500]: Result */
-  variable[500] = NEW_ReduceAction497_parser___ReduceAction497___init() /*new ReduceAction497*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[500]) /*AbstractArray::add*/;
-  /* Register variable[501]: Result */
-  variable[501] = NEW_ReduceAction498_parser___ReduceAction498___init() /*new ReduceAction498*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[501]) /*AbstractArray::add*/;
-  /* Register variable[502]: Result */
-  variable[502] = NEW_ReduceAction499_parser___ReduceAction499___init() /*new ReduceAction499*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[502]) /*AbstractArray::add*/;
-  /* Register variable[503]: Result */
-  variable[503] = NEW_ReduceAction500_parser___ReduceAction500___init() /*new ReduceAction500*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[503]) /*AbstractArray::add*/;
-  /* Register variable[504]: Result */
-  variable[504] = NEW_ReduceAction501_parser___ReduceAction501___init() /*new ReduceAction501*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[504]) /*AbstractArray::add*/;
-  /* Register variable[505]: Result */
-  variable[505] = NEW_ReduceAction502_parser___ReduceAction502___init() /*new ReduceAction502*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[505]) /*AbstractArray::add*/;
-  /* Register variable[506]: Result */
-  variable[506] = NEW_ReduceAction503_parser___ReduceAction503___init() /*new ReduceAction503*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[506]) /*AbstractArray::add*/;
-  /* Register variable[507]: Result */
-  variable[507] = NEW_ReduceAction504_parser___ReduceAction504___init() /*new ReduceAction504*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[507]) /*AbstractArray::add*/;
-  /* Register variable[508]: Result */
-  variable[508] = NEW_ReduceAction505_parser___ReduceAction505___init() /*new ReduceAction505*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[508]) /*AbstractArray::add*/;
-  /* Register variable[509]: Result */
-  variable[509] = NEW_ReduceAction506_parser___ReduceAction506___init() /*new ReduceAction506*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[509]) /*AbstractArray::add*/;
-  /* Register variable[510]: Result */
-  variable[510] = NEW_ReduceAction507_parser___ReduceAction507___init() /*new ReduceAction507*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[510]) /*AbstractArray::add*/;
-  /* Register variable[511]: Result */
-  variable[511] = NEW_ReduceAction508_parser___ReduceAction508___init() /*new ReduceAction508*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[511]) /*AbstractArray::add*/;
-  /* Register variable[512]: Result */
-  variable[512] = NEW_ReduceAction509_parser___ReduceAction509___init() /*new ReduceAction509*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[512]) /*AbstractArray::add*/;
-  /* Register variable[513]: Result */
-  variable[513] = NEW_ReduceAction510_parser___ReduceAction510___init() /*new ReduceAction510*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[513]) /*AbstractArray::add*/;
-  /* Register variable[514]: Result */
-  variable[514] = NEW_ReduceAction511_parser___ReduceAction511___init() /*new ReduceAction511*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[514]) /*AbstractArray::add*/;
-  /* Register variable[515]: Result */
-  variable[515] = NEW_ReduceAction512_parser___ReduceAction512___init() /*new ReduceAction512*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[515]) /*AbstractArray::add*/;
-  /* Register variable[516]: Result */
-  variable[516] = NEW_ReduceAction513_parser___ReduceAction513___init() /*new ReduceAction513*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[516]) /*AbstractArray::add*/;
-  /* Register variable[517]: Result */
-  variable[517] = NEW_ReduceAction514_parser___ReduceAction514___init() /*new ReduceAction514*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[517]) /*AbstractArray::add*/;
-  /* Register variable[518]: Result */
-  variable[518] = NEW_ReduceAction515_parser___ReduceAction515___init() /*new ReduceAction515*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[518]) /*AbstractArray::add*/;
-  /* Register variable[519]: Result */
-  variable[519] = NEW_ReduceAction516_parser___ReduceAction516___init() /*new ReduceAction516*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[519]) /*AbstractArray::add*/;
-  /* Register variable[520]: Result */
-  variable[520] = NEW_ReduceAction517_parser___ReduceAction517___init() /*new ReduceAction517*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[520]) /*AbstractArray::add*/;
-  /* Register variable[521]: Result */
-  variable[521] = NEW_ReduceAction518_parser___ReduceAction518___init() /*new ReduceAction518*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[521]) /*AbstractArray::add*/;
-  /* Register variable[522]: Result */
-  variable[522] = NEW_ReduceAction519_parser___ReduceAction519___init() /*new ReduceAction519*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[522]) /*AbstractArray::add*/;
-  /* Register variable[523]: Result */
-  variable[523] = NEW_ReduceAction520_parser___ReduceAction520___init() /*new ReduceAction520*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[523]) /*AbstractArray::add*/;
-  /* Register variable[524]: Result */
-  variable[524] = NEW_ReduceAction521_parser___ReduceAction521___init() /*new ReduceAction521*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[524]) /*AbstractArray::add*/;
-  /* Register variable[525]: Result */
-  variable[525] = NEW_ReduceAction522_parser___ReduceAction522___init() /*new ReduceAction522*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[525]) /*AbstractArray::add*/;
-  /* Register variable[526]: Result */
-  variable[526] = NEW_ReduceAction523_parser___ReduceAction523___init() /*new ReduceAction523*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[526]) /*AbstractArray::add*/;
-  /* Register variable[527]: Result */
-  variable[527] = NEW_ReduceAction524_parser___ReduceAction524___init() /*new ReduceAction524*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[527]) /*AbstractArray::add*/;
-  /* Register variable[528]: Result */
-  variable[528] = NEW_ReduceAction525_parser___ReduceAction525___init() /*new ReduceAction525*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[528]) /*AbstractArray::add*/;
-  /* Register variable[529]: Result */
-  variable[529] = NEW_ReduceAction526_parser___ReduceAction526___init() /*new ReduceAction526*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[529]) /*AbstractArray::add*/;
-  /* Register variable[530]: Result */
-  variable[530] = NEW_ReduceAction527_parser___ReduceAction527___init() /*new ReduceAction527*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[530]) /*AbstractArray::add*/;
-  /* Register variable[531]: Result */
-  variable[531] = NEW_ReduceAction528_parser___ReduceAction528___init() /*new ReduceAction528*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[531]) /*AbstractArray::add*/;
-  /* Register variable[532]: Result */
-  variable[532] = NEW_ReduceAction529_parser___ReduceAction529___init() /*new ReduceAction529*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[532]) /*AbstractArray::add*/;
-  /* Register variable[533]: Result */
-  variable[533] = NEW_ReduceAction530_parser___ReduceAction530___init() /*new ReduceAction530*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[533]) /*AbstractArray::add*/;
-  /* Register variable[534]: Result */
-  variable[534] = NEW_ReduceAction531_parser___ReduceAction531___init() /*new ReduceAction531*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[534]) /*AbstractArray::add*/;
-  /* Register variable[535]: Result */
-  variable[535] = NEW_ReduceAction532_parser___ReduceAction532___init() /*new ReduceAction532*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[535]) /*AbstractArray::add*/;
-  /* Register variable[536]: Result */
-  variable[536] = NEW_ReduceAction533_parser___ReduceAction533___init() /*new ReduceAction533*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[536]) /*AbstractArray::add*/;
-  /* Register variable[537]: Result */
-  variable[537] = NEW_ReduceAction534_parser___ReduceAction534___init() /*new ReduceAction534*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[537]) /*AbstractArray::add*/;
-  /* Register variable[538]: Result */
-  variable[538] = NEW_ReduceAction535_parser___ReduceAction535___init() /*new ReduceAction535*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[538]) /*AbstractArray::add*/;
-  /* Register variable[539]: Result */
-  variable[539] = NEW_ReduceAction536_parser___ReduceAction536___init() /*new ReduceAction536*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[539]) /*AbstractArray::add*/;
-  /* Register variable[540]: Result */
-  variable[540] = NEW_ReduceAction537_parser___ReduceAction537___init() /*new ReduceAction537*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[540]) /*AbstractArray::add*/;
-  /* Register variable[541]: Result */
-  variable[541] = NEW_ReduceAction538_parser___ReduceAction538___init() /*new ReduceAction538*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[541]) /*AbstractArray::add*/;
-  /* Register variable[542]: Result */
-  variable[542] = NEW_ReduceAction539_parser___ReduceAction539___init() /*new ReduceAction539*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[542]) /*AbstractArray::add*/;
-  /* Register variable[543]: Result */
-  variable[543] = NEW_ReduceAction540_parser___ReduceAction540___init() /*new ReduceAction540*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[543]) /*AbstractArray::add*/;
-  /* Register variable[544]: Result */
-  variable[544] = NEW_ReduceAction541_parser___ReduceAction541___init() /*new ReduceAction541*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[544]) /*AbstractArray::add*/;
-  /* Register variable[545]: Result */
-  variable[545] = NEW_ReduceAction542_parser___ReduceAction542___init() /*new ReduceAction542*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[545]) /*AbstractArray::add*/;
-  /* Register variable[546]: Result */
-  variable[546] = NEW_ReduceAction543_parser___ReduceAction543___init() /*new ReduceAction543*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[546]) /*AbstractArray::add*/;
-  /* Register variable[547]: Result */
-  variable[547] = NEW_ReduceAction544_parser___ReduceAction544___init() /*new ReduceAction544*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[547]) /*AbstractArray::add*/;
-  /* Register variable[548]: Result */
-  variable[548] = NEW_ReduceAction545_parser___ReduceAction545___init() /*new ReduceAction545*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[548]) /*AbstractArray::add*/;
-  /* Register variable[549]: Result */
-  variable[549] = NEW_ReduceAction546_parser___ReduceAction546___init() /*new ReduceAction546*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[549]) /*AbstractArray::add*/;
-  /* Register variable[550]: Result */
-  variable[550] = NEW_ReduceAction547_parser___ReduceAction547___init() /*new ReduceAction547*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[550]) /*AbstractArray::add*/;
-  /* Register variable[551]: Result */
-  variable[551] = NEW_ReduceAction548_parser___ReduceAction548___init() /*new ReduceAction548*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[551]) /*AbstractArray::add*/;
-  /* Register variable[552]: Result */
-  variable[552] = NEW_ReduceAction549_parser___ReduceAction549___init() /*new ReduceAction549*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[552]) /*AbstractArray::add*/;
-  /* Register variable[553]: Result */
-  variable[553] = NEW_ReduceAction550_parser___ReduceAction550___init() /*new ReduceAction550*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[553]) /*AbstractArray::add*/;
-  /* Register variable[554]: Result */
-  variable[554] = NEW_ReduceAction551_parser___ReduceAction551___init() /*new ReduceAction551*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[554]) /*AbstractArray::add*/;
-  /* Register variable[555]: Result */
-  variable[555] = NEW_ReduceAction552_parser___ReduceAction552___init() /*new ReduceAction552*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[555]) /*AbstractArray::add*/;
-  /* Register variable[556]: Result */
-  variable[556] = NEW_ReduceAction553_parser___ReduceAction553___init() /*new ReduceAction553*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[556]) /*AbstractArray::add*/;
-  /* Register variable[557]: Result */
-  variable[557] = NEW_ReduceAction554_parser___ReduceAction554___init() /*new ReduceAction554*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[557]) /*AbstractArray::add*/;
-  /* Register variable[558]: Result */
-  variable[558] = NEW_ReduceAction555_parser___ReduceAction555___init() /*new ReduceAction555*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[558]) /*AbstractArray::add*/;
-  /* Register variable[559]: Result */
-  variable[559] = NEW_ReduceAction556_parser___ReduceAction556___init() /*new ReduceAction556*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[559]) /*AbstractArray::add*/;
-  /* Register variable[560]: Result */
-  variable[560] = NEW_ReduceAction557_parser___ReduceAction557___init() /*new ReduceAction557*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[560]) /*AbstractArray::add*/;
-  /* Register variable[561]: Result */
-  variable[561] = NEW_ReduceAction558_parser___ReduceAction558___init() /*new ReduceAction558*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[561]) /*AbstractArray::add*/;
-  /* Register variable[562]: Result */
-  variable[562] = NEW_ReduceAction559_parser___ReduceAction559___init() /*new ReduceAction559*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[562]) /*AbstractArray::add*/;
-  /* Register variable[563]: Result */
-  variable[563] = NEW_ReduceAction560_parser___ReduceAction560___init() /*new ReduceAction560*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[563]) /*AbstractArray::add*/;
-  /* Register variable[564]: Result */
-  variable[564] = NEW_ReduceAction561_parser___ReduceAction561___init() /*new ReduceAction561*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[564]) /*AbstractArray::add*/;
-  /* Register variable[565]: Result */
-  variable[565] = NEW_ReduceAction562_parser___ReduceAction562___init() /*new ReduceAction562*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[565]) /*AbstractArray::add*/;
-  /* Register variable[566]: Result */
-  variable[566] = NEW_ReduceAction563_parser___ReduceAction563___init() /*new ReduceAction563*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[566]) /*AbstractArray::add*/;
-  /* Register variable[567]: Result */
-  variable[567] = NEW_ReduceAction564_parser___ReduceAction564___init() /*new ReduceAction564*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[567]) /*AbstractArray::add*/;
-  /* Register variable[568]: Result */
-  variable[568] = NEW_ReduceAction565_parser___ReduceAction565___init() /*new ReduceAction565*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[568]) /*AbstractArray::add*/;
-  /* Register variable[569]: Result */
-  variable[569] = NEW_ReduceAction566_parser___ReduceAction566___init() /*new ReduceAction566*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[569]) /*AbstractArray::add*/;
-  /* Register variable[570]: Result */
-  variable[570] = NEW_ReduceAction567_parser___ReduceAction567___init() /*new ReduceAction567*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[570]) /*AbstractArray::add*/;
-  /* Register variable[571]: Result */
-  variable[571] = NEW_ReduceAction568_parser___ReduceAction568___init() /*new ReduceAction568*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[571]) /*AbstractArray::add*/;
-  /* Register variable[572]: Result */
-  variable[572] = NEW_ReduceAction569_parser___ReduceAction569___init() /*new ReduceAction569*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[572]) /*AbstractArray::add*/;
-  /* Register variable[573]: Result */
-  variable[573] = NEW_ReduceAction570_parser___ReduceAction570___init() /*new ReduceAction570*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[573]) /*AbstractArray::add*/;
-  /* Register variable[574]: Result */
-  variable[574] = NEW_ReduceAction571_parser___ReduceAction571___init() /*new ReduceAction571*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[574]) /*AbstractArray::add*/;
-  /* Register variable[575]: Result */
-  variable[575] = NEW_ReduceAction572_parser___ReduceAction572___init() /*new ReduceAction572*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[575]) /*AbstractArray::add*/;
-  /* Register variable[576]: Result */
-  variable[576] = NEW_ReduceAction573_parser___ReduceAction573___init() /*new ReduceAction573*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[576]) /*AbstractArray::add*/;
-  /* Register variable[577]: Result */
-  variable[577] = NEW_ReduceAction574_parser___ReduceAction574___init() /*new ReduceAction574*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[577]) /*AbstractArray::add*/;
-  /* Register variable[578]: Result */
-  variable[578] = NEW_ReduceAction575_parser___ReduceAction575___init() /*new ReduceAction575*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[578]) /*AbstractArray::add*/;
-  /* Register variable[579]: Result */
-  variable[579] = NEW_ReduceAction576_parser___ReduceAction576___init() /*new ReduceAction576*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[579]) /*AbstractArray::add*/;
-  /* Register variable[580]: Result */
-  variable[580] = NEW_ReduceAction577_parser___ReduceAction577___init() /*new ReduceAction577*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[580]) /*AbstractArray::add*/;
-  /* Register variable[581]: Result */
-  variable[581] = NEW_ReduceAction578_parser___ReduceAction578___init() /*new ReduceAction578*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[581]) /*AbstractArray::add*/;
-  /* Register variable[582]: Result */
-  variable[582] = NEW_ReduceAction579_parser___ReduceAction579___init() /*new ReduceAction579*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[582]) /*AbstractArray::add*/;
-  /* Register variable[583]: Result */
-  variable[583] = NEW_ReduceAction580_parser___ReduceAction580___init() /*new ReduceAction580*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[583]) /*AbstractArray::add*/;
-  /* Register variable[584]: Result */
-  variable[584] = NEW_ReduceAction581_parser___ReduceAction581___init() /*new ReduceAction581*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[584]) /*AbstractArray::add*/;
-  /* Register variable[585]: Result */
-  variable[585] = NEW_ReduceAction582_parser___ReduceAction582___init() /*new ReduceAction582*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[585]) /*AbstractArray::add*/;
-  /* Register variable[586]: Result */
-  variable[586] = NEW_ReduceAction583_parser___ReduceAction583___init() /*new ReduceAction583*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[586]) /*AbstractArray::add*/;
-  /* Register variable[587]: Result */
-  variable[587] = NEW_ReduceAction584_parser___ReduceAction584___init() /*new ReduceAction584*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[587]) /*AbstractArray::add*/;
-  /* Register variable[588]: Result */
-  variable[588] = NEW_ReduceAction585_parser___ReduceAction585___init() /*new ReduceAction585*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[588]) /*AbstractArray::add*/;
-  /* Register variable[589]: Result */
-  variable[589] = NEW_ReduceAction586_parser___ReduceAction586___init() /*new ReduceAction586*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[589]) /*AbstractArray::add*/;
-  /* Register variable[590]: Result */
-  variable[590] = NEW_ReduceAction587_parser___ReduceAction587___init() /*new ReduceAction587*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[590]) /*AbstractArray::add*/;
-  /* Register variable[591]: Result */
-  variable[591] = NEW_ReduceAction588_parser___ReduceAction588___init() /*new ReduceAction588*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[591]) /*AbstractArray::add*/;
-  /* Register variable[592]: Result */
-  variable[592] = NEW_ReduceAction589_parser___ReduceAction589___init() /*new ReduceAction589*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[592]) /*AbstractArray::add*/;
-  /* Register variable[593]: Result */
-  variable[593] = NEW_ReduceAction590_parser___ReduceAction590___init() /*new ReduceAction590*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[593]) /*AbstractArray::add*/;
-  /* Register variable[594]: Result */
-  variable[594] = NEW_ReduceAction591_parser___ReduceAction591___init() /*new ReduceAction591*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[594]) /*AbstractArray::add*/;
-  /* Register variable[595]: Result */
-  variable[595] = NEW_ReduceAction592_parser___ReduceAction592___init() /*new ReduceAction592*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[595]) /*AbstractArray::add*/;
-  /* Register variable[596]: Result */
-  variable[596] = NEW_ReduceAction593_parser___ReduceAction593___init() /*new ReduceAction593*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[596]) /*AbstractArray::add*/;
-  /* Register variable[597]: Result */
-  variable[597] = NEW_ReduceAction594_parser___ReduceAction594___init() /*new ReduceAction594*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[597]) /*AbstractArray::add*/;
-  /* Register variable[598]: Result */
-  variable[598] = NEW_ReduceAction595_parser___ReduceAction595___init() /*new ReduceAction595*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[598]) /*AbstractArray::add*/;
-  /* Register variable[599]: Result */
-  variable[599] = NEW_ReduceAction596_parser___ReduceAction596___init() /*new ReduceAction596*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[599]) /*AbstractArray::add*/;
-  /* Register variable[600]: Result */
-  variable[600] = NEW_ReduceAction597_parser___ReduceAction597___init() /*new ReduceAction597*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[600]) /*AbstractArray::add*/;
-  /* Register variable[601]: Result */
-  variable[601] = NEW_ReduceAction598_parser___ReduceAction598___init() /*new ReduceAction598*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[601]) /*AbstractArray::add*/;
-  /* Register variable[602]: Result */
-  variable[602] = NEW_ReduceAction599_parser___ReduceAction599___init() /*new ReduceAction599*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[602]) /*AbstractArray::add*/;
-  /* Register variable[603]: Result */
-  variable[603] = NEW_ReduceAction600_parser___ReduceAction600___init() /*new ReduceAction600*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[603]) /*AbstractArray::add*/;
-  /* Register variable[604]: Result */
-  variable[604] = NEW_ReduceAction601_parser___ReduceAction601___init() /*new ReduceAction601*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[604]) /*AbstractArray::add*/;
-  /* Register variable[605]: Result */
-  variable[605] = NEW_ReduceAction602_parser___ReduceAction602___init() /*new ReduceAction602*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[605]) /*AbstractArray::add*/;
-  /* Register variable[606]: Result */
-  variable[606] = NEW_ReduceAction603_parser___ReduceAction603___init() /*new ReduceAction603*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[606]) /*AbstractArray::add*/;
-  /* Register variable[607]: Result */
-  variable[607] = NEW_ReduceAction604_parser___ReduceAction604___init() /*new ReduceAction604*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[607]) /*AbstractArray::add*/;
-  /* Register variable[608]: Result */
-  variable[608] = NEW_ReduceAction605_parser___ReduceAction605___init() /*new ReduceAction605*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[608]) /*AbstractArray::add*/;
-  /* Register variable[609]: Result */
-  variable[609] = NEW_ReduceAction606_parser___ReduceAction606___init() /*new ReduceAction606*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[609]) /*AbstractArray::add*/;
-  /* Register variable[610]: Result */
-  variable[610] = NEW_ReduceAction607_parser___ReduceAction607___init() /*new ReduceAction607*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[610]) /*AbstractArray::add*/;
-  /* Register variable[611]: Result */
-  variable[611] = NEW_ReduceAction608_parser___ReduceAction608___init() /*new ReduceAction608*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[611]) /*AbstractArray::add*/;
-  /* Register variable[612]: Result */
-  variable[612] = NEW_ReduceAction609_parser___ReduceAction609___init() /*new ReduceAction609*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[612]) /*AbstractArray::add*/;
-  /* Register variable[613]: Result */
-  variable[613] = NEW_ReduceAction610_parser___ReduceAction610___init() /*new ReduceAction610*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[613]) /*AbstractArray::add*/;
-  /* Register variable[614]: Result */
-  variable[614] = NEW_ReduceAction611_parser___ReduceAction611___init() /*new ReduceAction611*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[614]) /*AbstractArray::add*/;
-  /* Register variable[615]: Result */
-  variable[615] = NEW_ReduceAction612_parser___ReduceAction612___init() /*new ReduceAction612*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[615]) /*AbstractArray::add*/;
-  /* Register variable[616]: Result */
-  variable[616] = NEW_ReduceAction613_parser___ReduceAction613___init() /*new ReduceAction613*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[616]) /*AbstractArray::add*/;
-  /* Register variable[617]: Result */
-  variable[617] = NEW_ReduceAction614_parser___ReduceAction614___init() /*new ReduceAction614*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[617]) /*AbstractArray::add*/;
-  /* Register variable[618]: Result */
-  variable[618] = NEW_ReduceAction615_parser___ReduceAction615___init() /*new ReduceAction615*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[618]) /*AbstractArray::add*/;
-  /* Register variable[619]: Result */
-  variable[619] = NEW_ReduceAction616_parser___ReduceAction616___init() /*new ReduceAction616*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[619]) /*AbstractArray::add*/;
-  /* Register variable[620]: Result */
-  variable[620] = NEW_ReduceAction617_parser___ReduceAction617___init() /*new ReduceAction617*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[620]) /*AbstractArray::add*/;
-  /* Register variable[621]: Result */
-  variable[621] = NEW_ReduceAction618_parser___ReduceAction618___init() /*new ReduceAction618*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[621]) /*AbstractArray::add*/;
-  /* Register variable[622]: Result */
-  variable[622] = NEW_ReduceAction619_parser___ReduceAction619___init() /*new ReduceAction619*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[622]) /*AbstractArray::add*/;
-  /* Register variable[623]: Result */
-  variable[623] = NEW_ReduceAction620_parser___ReduceAction620___init() /*new ReduceAction620*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[623]) /*AbstractArray::add*/;
-  /* Register variable[624]: Result */
-  variable[624] = NEW_ReduceAction621_parser___ReduceAction621___init() /*new ReduceAction621*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[624]) /*AbstractArray::add*/;
-  /* Register variable[625]: Result */
-  variable[625] = NEW_ReduceAction622_parser___ReduceAction622___init() /*new ReduceAction622*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[625]) /*AbstractArray::add*/;
-  /* Register variable[626]: Result */
-  variable[626] = NEW_ReduceAction623_parser___ReduceAction623___init() /*new ReduceAction623*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[626]) /*AbstractArray::add*/;
-  /* Register variable[627]: Result */
-  variable[627] = NEW_ReduceAction624_parser___ReduceAction624___init() /*new ReduceAction624*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[627]) /*AbstractArray::add*/;
-  /* Register variable[628]: Result */
-  variable[628] = NEW_ReduceAction625_parser___ReduceAction625___init() /*new ReduceAction625*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[628]) /*AbstractArray::add*/;
-  /* Register variable[629]: Result */
-  variable[629] = NEW_ReduceAction626_parser___ReduceAction626___init() /*new ReduceAction626*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[629]) /*AbstractArray::add*/;
-  /* Register variable[630]: Result */
-  variable[630] = NEW_ReduceAction627_parser___ReduceAction627___init() /*new ReduceAction627*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[630]) /*AbstractArray::add*/;
-  /* Register variable[631]: Result */
-  variable[631] = NEW_ReduceAction628_parser___ReduceAction628___init() /*new ReduceAction628*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[631]) /*AbstractArray::add*/;
-  /* Register variable[632]: Result */
-  variable[632] = NEW_ReduceAction629_parser___ReduceAction629___init() /*new ReduceAction629*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[632]) /*AbstractArray::add*/;
-  /* Register variable[633]: Result */
-  variable[633] = NEW_ReduceAction630_parser___ReduceAction630___init() /*new ReduceAction630*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[633]) /*AbstractArray::add*/;
-  /* Register variable[634]: Result */
-  variable[634] = NEW_ReduceAction631_parser___ReduceAction631___init() /*new ReduceAction631*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[634]) /*AbstractArray::add*/;
-  /* Register variable[635]: Result */
-  variable[635] = NEW_ReduceAction632_parser___ReduceAction632___init() /*new ReduceAction632*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[635]) /*AbstractArray::add*/;
-  /* Register variable[636]: Result */
-  variable[636] = NEW_ReduceAction633_parser___ReduceAction633___init() /*new ReduceAction633*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[636]) /*AbstractArray::add*/;
-  /* Register variable[637]: Result */
-  variable[637] = NEW_ReduceAction634_parser___ReduceAction634___init() /*new ReduceAction634*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[637]) /*AbstractArray::add*/;
-  /* Register variable[638]: Result */
-  variable[638] = NEW_ReduceAction635_parser___ReduceAction635___init() /*new ReduceAction635*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[638]) /*AbstractArray::add*/;
-  /* Register variable[639]: Result */
-  variable[639] = NEW_ReduceAction636_parser___ReduceAction636___init() /*new ReduceAction636*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[639]) /*AbstractArray::add*/;
-  /* Register variable[640]: Result */
-  variable[640] = NEW_ReduceAction637_parser___ReduceAction637___init() /*new ReduceAction637*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[640]) /*AbstractArray::add*/;
-  /* Register variable[641]: Result */
-  variable[641] = NEW_ReduceAction638_parser___ReduceAction638___init() /*new ReduceAction638*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[641]) /*AbstractArray::add*/;
-  /* Register variable[642]: Result */
-  variable[642] = NEW_ReduceAction639_parser___ReduceAction639___init() /*new ReduceAction639*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[642]) /*AbstractArray::add*/;
-  /* Register variable[643]: Result */
-  variable[643] = NEW_ReduceAction640_parser___ReduceAction640___init() /*new ReduceAction640*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[643]) /*AbstractArray::add*/;
-  /* Register variable[644]: Result */
-  variable[644] = NEW_ReduceAction641_parser___ReduceAction641___init() /*new ReduceAction641*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[644]) /*AbstractArray::add*/;
-  /* Register variable[645]: Result */
-  variable[645] = NEW_ReduceAction642_parser___ReduceAction642___init() /*new ReduceAction642*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[645]) /*AbstractArray::add*/;
-  /* Register variable[646]: Result */
-  variable[646] = NEW_ReduceAction643_parser___ReduceAction643___init() /*new ReduceAction643*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[646]) /*AbstractArray::add*/;
-  /* Register variable[647]: Result */
-  variable[647] = NEW_ReduceAction644_parser___ReduceAction644___init() /*new ReduceAction644*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[647]) /*AbstractArray::add*/;
-  /* Register variable[648]: Result */
-  variable[648] = NEW_ReduceAction645_parser___ReduceAction645___init() /*new ReduceAction645*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[648]) /*AbstractArray::add*/;
-  /* Register variable[649]: Result */
-  variable[649] = NEW_ReduceAction646_parser___ReduceAction646___init() /*new ReduceAction646*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[649]) /*AbstractArray::add*/;
-  /* Register variable[650]: Result */
-  variable[650] = NEW_ReduceAction647_parser___ReduceAction647___init() /*new ReduceAction647*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[650]) /*AbstractArray::add*/;
-  /* Register variable[651]: Result */
-  variable[651] = NEW_ReduceAction648_parser___ReduceAction648___init() /*new ReduceAction648*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[651]) /*AbstractArray::add*/;
-  /* Register variable[652]: Result */
-  variable[652] = NEW_ReduceAction649_parser___ReduceAction649___init() /*new ReduceAction649*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[652]) /*AbstractArray::add*/;
-  /* Register variable[653]: Result */
-  variable[653] = NEW_ReduceAction650_parser___ReduceAction650___init() /*new ReduceAction650*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[653]) /*AbstractArray::add*/;
-  /* Register variable[654]: Result */
-  variable[654] = NEW_ReduceAction651_parser___ReduceAction651___init() /*new ReduceAction651*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[654]) /*AbstractArray::add*/;
-  /* Register variable[655]: Result */
-  variable[655] = NEW_ReduceAction652_parser___ReduceAction652___init() /*new ReduceAction652*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[655]) /*AbstractArray::add*/;
-  /* Register variable[656]: Result */
-  variable[656] = NEW_ReduceAction653_parser___ReduceAction653___init() /*new ReduceAction653*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[656]) /*AbstractArray::add*/;
-  /* Register variable[657]: Result */
-  variable[657] = NEW_ReduceAction654_parser___ReduceAction654___init() /*new ReduceAction654*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[657]) /*AbstractArray::add*/;
-  /* Register variable[658]: Result */
-  variable[658] = NEW_ReduceAction655_parser___ReduceAction655___init() /*new ReduceAction655*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[658]) /*AbstractArray::add*/;
-  /* Register variable[659]: Result */
-  variable[659] = NEW_ReduceAction656_parser___ReduceAction656___init() /*new ReduceAction656*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[659]) /*AbstractArray::add*/;
-  /* Register variable[660]: Result */
-  variable[660] = NEW_ReduceAction657_parser___ReduceAction657___init() /*new ReduceAction657*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[660]) /*AbstractArray::add*/;
-  /* Register variable[661]: Result */
-  variable[661] = NEW_ReduceAction658_parser___ReduceAction658___init() /*new ReduceAction658*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[661]) /*AbstractArray::add*/;
-  /* Register variable[662]: Result */
-  variable[662] = NEW_ReduceAction659_parser___ReduceAction659___init() /*new ReduceAction659*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[662]) /*AbstractArray::add*/;
-  /* Register variable[663]: Result */
-  variable[663] = NEW_ReduceAction660_parser___ReduceAction660___init() /*new ReduceAction660*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[663]) /*AbstractArray::add*/;
-  /* Register variable[664]: Result */
-  variable[664] = NEW_ReduceAction661_parser___ReduceAction661___init() /*new ReduceAction661*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[664]) /*AbstractArray::add*/;
-  /* Register variable[665]: Result */
-  variable[665] = NEW_ReduceAction662_parser___ReduceAction662___init() /*new ReduceAction662*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[665]) /*AbstractArray::add*/;
-  /* Register variable[666]: Result */
-  variable[666] = NEW_ReduceAction663_parser___ReduceAction663___init() /*new ReduceAction663*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[666]) /*AbstractArray::add*/;
-  /* Register variable[667]: Result */
-  variable[667] = NEW_ReduceAction664_parser___ReduceAction664___init() /*new ReduceAction664*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[667]) /*AbstractArray::add*/;
-  /* Register variable[668]: Result */
-  variable[668] = NEW_ReduceAction665_parser___ReduceAction665___init() /*new ReduceAction665*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[668]) /*AbstractArray::add*/;
-  /* Register variable[669]: Result */
-  variable[669] = NEW_ReduceAction666_parser___ReduceAction666___init() /*new ReduceAction666*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[669]) /*AbstractArray::add*/;
-  /* Register variable[670]: Result */
-  variable[670] = NEW_ReduceAction667_parser___ReduceAction667___init() /*new ReduceAction667*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[670]) /*AbstractArray::add*/;
-  /* Register variable[671]: Result */
-  variable[671] = NEW_ReduceAction668_parser___ReduceAction668___init() /*new ReduceAction668*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[671]) /*AbstractArray::add*/;
-  /* Register variable[672]: Result */
-  variable[672] = NEW_ReduceAction669_parser___ReduceAction669___init() /*new ReduceAction669*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[672]) /*AbstractArray::add*/;
-  /* Register variable[673]: Result */
-  variable[673] = NEW_ReduceAction670_parser___ReduceAction670___init() /*new ReduceAction670*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[673]) /*AbstractArray::add*/;
-  /* Register variable[674]: Result */
-  variable[674] = NEW_ReduceAction671_parser___ReduceAction671___init() /*new ReduceAction671*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[674]) /*AbstractArray::add*/;
-  /* Register variable[675]: Result */
-  variable[675] = NEW_ReduceAction672_parser___ReduceAction672___init() /*new ReduceAction672*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[675]) /*AbstractArray::add*/;
-  /* Register variable[676]: Result */
-  variable[676] = NEW_ReduceAction673_parser___ReduceAction673___init() /*new ReduceAction673*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[676]) /*AbstractArray::add*/;
-  /* Register variable[677]: Result */
-  variable[677] = NEW_ReduceAction674_parser___ReduceAction674___init() /*new ReduceAction674*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[677]) /*AbstractArray::add*/;
-  /* Register variable[678]: Result */
-  variable[678] = NEW_ReduceAction675_parser___ReduceAction675___init() /*new ReduceAction675*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[678]) /*AbstractArray::add*/;
-  /* Register variable[679]: Result */
-  variable[679] = NEW_ReduceAction676_parser___ReduceAction676___init() /*new ReduceAction676*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[679]) /*AbstractArray::add*/;
-  /* Register variable[680]: Result */
-  variable[680] = NEW_ReduceAction677_parser___ReduceAction677___init() /*new ReduceAction677*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[680]) /*AbstractArray::add*/;
-  /* Register variable[681]: Result */
-  variable[681] = NEW_ReduceAction678_parser___ReduceAction678___init() /*new ReduceAction678*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[681]) /*AbstractArray::add*/;
-  /* Register variable[682]: Result */
-  variable[682] = NEW_ReduceAction679_parser___ReduceAction679___init() /*new ReduceAction679*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[682]) /*AbstractArray::add*/;
-  /* Register variable[683]: Result */
-  variable[683] = NEW_ReduceAction680_parser___ReduceAction680___init() /*new ReduceAction680*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[683]) /*AbstractArray::add*/;
-  /* Register variable[684]: Result */
-  variable[684] = NEW_ReduceAction681_parser___ReduceAction681___init() /*new ReduceAction681*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[684]) /*AbstractArray::add*/;
-  /* Register variable[685]: Result */
-  variable[685] = NEW_ReduceAction682_parser___ReduceAction682___init() /*new ReduceAction682*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[685]) /*AbstractArray::add*/;
-  /* Register variable[686]: Result */
-  variable[686] = NEW_ReduceAction683_parser___ReduceAction683___init() /*new ReduceAction683*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[686]) /*AbstractArray::add*/;
-  /* Register variable[687]: Result */
-  variable[687] = NEW_ReduceAction684_parser___ReduceAction684___init() /*new ReduceAction684*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[687]) /*AbstractArray::add*/;
-  /* Register variable[688]: Result */
-  variable[688] = NEW_ReduceAction685_parser___ReduceAction685___init() /*new ReduceAction685*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[688]) /*AbstractArray::add*/;
-  /* Register variable[689]: Result */
-  variable[689] = NEW_ReduceAction686_parser___ReduceAction686___init() /*new ReduceAction686*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[689]) /*AbstractArray::add*/;
-  /* Register variable[690]: Result */
-  variable[690] = NEW_ReduceAction687_parser___ReduceAction687___init() /*new ReduceAction687*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[690]) /*AbstractArray::add*/;
-  /* Register variable[691]: Result */
-  variable[691] = NEW_ReduceAction688_parser___ReduceAction688___init() /*new ReduceAction688*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[691]) /*AbstractArray::add*/;
-  /* Register variable[692]: Result */
-  variable[692] = NEW_ReduceAction689_parser___ReduceAction689___init() /*new ReduceAction689*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[692]) /*AbstractArray::add*/;
-  /* Register variable[693]: Result */
-  variable[693] = NEW_ReduceAction690_parser___ReduceAction690___init() /*new ReduceAction690*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[693]) /*AbstractArray::add*/;
-  /* Register variable[694]: Result */
-  variable[694] = NEW_ReduceAction691_parser___ReduceAction691___init() /*new ReduceAction691*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[694]) /*AbstractArray::add*/;
-  /* Register variable[695]: Result */
-  variable[695] = NEW_ReduceAction692_parser___ReduceAction692___init() /*new ReduceAction692*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[695]) /*AbstractArray::add*/;
-  /* Register variable[696]: Result */
-  variable[696] = NEW_ReduceAction693_parser___ReduceAction693___init() /*new ReduceAction693*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[696]) /*AbstractArray::add*/;
-  /* Register variable[697]: Result */
-  variable[697] = NEW_ReduceAction694_parser___ReduceAction694___init() /*new ReduceAction694*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[697]) /*AbstractArray::add*/;
-  /* Register variable[698]: Result */
-  variable[698] = NEW_ReduceAction695_parser___ReduceAction695___init() /*new ReduceAction695*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[698]) /*AbstractArray::add*/;
-  /* Register variable[699]: Result */
-  variable[699] = NEW_ReduceAction696_parser___ReduceAction696___init() /*new ReduceAction696*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[699]) /*AbstractArray::add*/;
-  /* Register variable[700]: Result */
-  variable[700] = NEW_ReduceAction697_parser___ReduceAction697___init() /*new ReduceAction697*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[700]) /*AbstractArray::add*/;
-  /* Register variable[701]: Result */
-  variable[701] = NEW_ReduceAction698_parser___ReduceAction698___init() /*new ReduceAction698*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[701]) /*AbstractArray::add*/;
-  /* Register variable[702]: Result */
-  variable[702] = NEW_ReduceAction699_parser___ReduceAction699___init() /*new ReduceAction699*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[702]) /*AbstractArray::add*/;
-  /* Register variable[703]: Result */
-  variable[703] = NEW_ReduceAction700_parser___ReduceAction700___init() /*new ReduceAction700*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[703]) /*AbstractArray::add*/;
-  /* Register variable[704]: Result */
-  variable[704] = NEW_ReduceAction701_parser___ReduceAction701___init() /*new ReduceAction701*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[704]) /*AbstractArray::add*/;
-  /* Register variable[705]: Result */
-  variable[705] = NEW_ReduceAction702_parser___ReduceAction702___init() /*new ReduceAction702*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[705]) /*AbstractArray::add*/;
-  /* Register variable[706]: Result */
-  variable[706] = NEW_ReduceAction703_parser___ReduceAction703___init() /*new ReduceAction703*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[706]) /*AbstractArray::add*/;
-  /* Register variable[707]: Result */
-  variable[707] = NEW_ReduceAction704_parser___ReduceAction704___init() /*new ReduceAction704*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[707]) /*AbstractArray::add*/;
-  /* Register variable[708]: Result */
-  variable[708] = NEW_ReduceAction705_parser___ReduceAction705___init() /*new ReduceAction705*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[708]) /*AbstractArray::add*/;
-  /* Register variable[709]: Result */
-  variable[709] = NEW_ReduceAction706_parser___ReduceAction706___init() /*new ReduceAction706*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[709]) /*AbstractArray::add*/;
-  /* Register variable[710]: Result */
-  variable[710] = NEW_ReduceAction707_parser___ReduceAction707___init() /*new ReduceAction707*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[710]) /*AbstractArray::add*/;
-  /* Register variable[711]: Result */
-  variable[711] = NEW_ReduceAction708_parser___ReduceAction708___init() /*new ReduceAction708*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[711]) /*AbstractArray::add*/;
-  /* Register variable[712]: Result */
-  variable[712] = NEW_ReduceAction709_parser___ReduceAction709___init() /*new ReduceAction709*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[712]) /*AbstractArray::add*/;
-  /* Register variable[713]: Result */
-  variable[713] = NEW_ReduceAction710_parser___ReduceAction710___init() /*new ReduceAction710*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[713]) /*AbstractArray::add*/;
-  /* Register variable[714]: Result */
-  variable[714] = NEW_ReduceAction711_parser___ReduceAction711___init() /*new ReduceAction711*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[714]) /*AbstractArray::add*/;
-  /* Register variable[715]: Result */
-  variable[715] = NEW_ReduceAction712_parser___ReduceAction712___init() /*new ReduceAction712*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[715]) /*AbstractArray::add*/;
-  /* Register variable[716]: Result */
-  variable[716] = NEW_ReduceAction713_parser___ReduceAction713___init() /*new ReduceAction713*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[716]) /*AbstractArray::add*/;
-  /* Register variable[717]: Result */
-  variable[717] = NEW_ReduceAction714_parser___ReduceAction714___init() /*new ReduceAction714*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[717]) /*AbstractArray::add*/;
-  /* Register variable[718]: Result */
-  variable[718] = NEW_ReduceAction715_parser___ReduceAction715___init() /*new ReduceAction715*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[718]) /*AbstractArray::add*/;
-  /* Register variable[719]: Result */
-  variable[719] = NEW_ReduceAction716_parser___ReduceAction716___init() /*new ReduceAction716*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[719]) /*AbstractArray::add*/;
-  /* Register variable[720]: Result */
-  variable[720] = NEW_ReduceAction717_parser___ReduceAction717___init() /*new ReduceAction717*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[720]) /*AbstractArray::add*/;
-  /* Register variable[721]: Result */
-  variable[721] = NEW_ReduceAction718_parser___ReduceAction718___init() /*new ReduceAction718*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[721]) /*AbstractArray::add*/;
-  /* Register variable[722]: Result */
-  variable[722] = NEW_ReduceAction719_parser___ReduceAction719___init() /*new ReduceAction719*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[722]) /*AbstractArray::add*/;
-  /* Register variable[723]: Result */
-  variable[723] = NEW_ReduceAction720_parser___ReduceAction720___init() /*new ReduceAction720*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[723]) /*AbstractArray::add*/;
-  /* Register variable[724]: Result */
-  variable[724] = NEW_ReduceAction721_parser___ReduceAction721___init() /*new ReduceAction721*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[724]) /*AbstractArray::add*/;
-  /* Register variable[725]: Result */
-  variable[725] = NEW_ReduceAction722_parser___ReduceAction722___init() /*new ReduceAction722*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[725]) /*AbstractArray::add*/;
-  /* Register variable[726]: Result */
-  variable[726] = NEW_ReduceAction723_parser___ReduceAction723___init() /*new ReduceAction723*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[726]) /*AbstractArray::add*/;
-  /* Register variable[727]: Result */
-  variable[727] = NEW_ReduceAction724_parser___ReduceAction724___init() /*new ReduceAction724*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[727]) /*AbstractArray::add*/;
-  /* Register variable[728]: Result */
-  variable[728] = NEW_ReduceAction725_parser___ReduceAction725___init() /*new ReduceAction725*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[728]) /*AbstractArray::add*/;
-  /* Register variable[729]: Result */
-  variable[729] = NEW_ReduceAction726_parser___ReduceAction726___init() /*new ReduceAction726*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[729]) /*AbstractArray::add*/;
-  /* Register variable[730]: Result */
-  variable[730] = NEW_ReduceAction727_parser___ReduceAction727___init() /*new ReduceAction727*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[730]) /*AbstractArray::add*/;
-  /* Register variable[731]: Result */
-  variable[731] = NEW_ReduceAction728_parser___ReduceAction728___init() /*new ReduceAction728*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[731]) /*AbstractArray::add*/;
-  /* Register variable[732]: Result */
-  variable[732] = NEW_ReduceAction729_parser___ReduceAction729___init() /*new ReduceAction729*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[732]) /*AbstractArray::add*/;
-  /* Register variable[733]: Result */
-  variable[733] = NEW_ReduceAction730_parser___ReduceAction730___init() /*new ReduceAction730*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[733]) /*AbstractArray::add*/;
-  /* Register variable[734]: Result */
-  variable[734] = NEW_ReduceAction731_parser___ReduceAction731___init() /*new ReduceAction731*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[734]) /*AbstractArray::add*/;
-  /* Register variable[735]: Result */
-  variable[735] = NEW_ReduceAction732_parser___ReduceAction732___init() /*new ReduceAction732*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[735]) /*AbstractArray::add*/;
-  /* Register variable[736]: Result */
-  variable[736] = NEW_ReduceAction733_parser___ReduceAction733___init() /*new ReduceAction733*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[736]) /*AbstractArray::add*/;
-  /* Register variable[737]: Result */
-  variable[737] = NEW_ReduceAction734_parser___ReduceAction734___init() /*new ReduceAction734*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[737]) /*AbstractArray::add*/;
-  /* Register variable[738]: Result */
-  variable[738] = NEW_ReduceAction735_parser___ReduceAction735___init() /*new ReduceAction735*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[738]) /*AbstractArray::add*/;
-  /* Register variable[739]: Result */
-  variable[739] = NEW_ReduceAction736_parser___ReduceAction736___init() /*new ReduceAction736*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[739]) /*AbstractArray::add*/;
-  /* Register variable[740]: Result */
-  variable[740] = NEW_ReduceAction737_parser___ReduceAction737___init() /*new ReduceAction737*/;
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[740]) /*AbstractArray::add*/;
-  /* Register variable[2]: Result */
-  /* Register variable[2]: Result */
-  variable[2] = NEW_Array_array___Array___with_items(variable[2]) /*new Array[ReduceAction]*/;
-  ATTR_parser___Parser____reduce_table(variable[0]) /*Parser::_reduce_table*/ = variable[2];
-  return_label28: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 909, LOCATE_parser___SearchTokensVisitor___visit};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Result */
-  variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
-  if (UNTAG_Bool(variable[3])) { /*if*/
-    /* Register variable[3]: Result */
-    variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
-    if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___visit, LOCATE_parser, 912); nit_exit(1);}
-    ATTR_parser___SearchTokensVisitor____last_token(variable[0]) /*SearchTokensVisitor::_last_token*/ =  variable[1] /*n*/;
-    /* Register variable[3]: Result */
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[0]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    /* Register variable[3]: For iterator */
-    variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
-    while (true) { /*for*/
-      /* Register variable[4]: For 'is_ok' result */
-      variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
-      if (!UNTAG_Bool(variable[4])) break; /*for*/
-      variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
-      /* Register variable[5]: Local variable */
-      variable[5] = variable[4];
-      CALL_parser_prod___Prod___first_token__eq( variable[5] /*no*/)( variable[5] /*no*/,  variable[1] /*n*/) /*Prod::first_token=*/;
-      continue_30: while(0);
-      CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
-    }
-    break_30: while(0);
-    /* Register variable[3]: Result */
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[0]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    CALL_abstract_collection___RemovableCollection___clear(variable[3])(variable[3]) /*AbstractArray::clear*/;
-  } else { /*if*/
-    /* Register variable[3]: Result */
-    variable[3] = TAG_Bool(( variable[1] /*n*/==NIT_NULL) || VAL_ISA( variable[1] /*n*/, COLOR_Prod, ID_Prod)) /*cast Prod*/;
-    if (!UNTAG_Bool(variable[3])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___visit, LOCATE_parser, 919); nit_exit(1);}
-    /* Register variable[3]: Result */
-    variable[3] = ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[0]) /*SearchTokensVisitor::_untokenned_nodes*/;
-    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3],  variable[1] /*n*/) /*AbstractArray::add*/;
-    CALL_parser_prod___PNode___visit_all( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::visit_all*/;
-    /* Register variable[3]: Result */
-    variable[3] = ATTR_parser___SearchTokensVisitor____last_token(variable[0]) /*SearchTokensVisitor::_last_token*/;
-    CALL_parser_prod___Prod___last_token__eq( variable[1] /*n*/)( variable[1] /*n*/, variable[3]) /*Prod::last_token=*/;
-  }
-  return_label29: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___SearchTokensVisitor___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 925, LOCATE_parser___SearchTokensVisitor___init};
-  val_t variable[3];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_SearchTokensVisitor].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = NEW_Array_array___Array___init() /*new Array[Prod]*/;
-  ATTR_parser___SearchTokensVisitor____untokenned_nodes(variable[0]) /*SearchTokensVisitor::_untokenned_nodes*/ = variable[2];
-  return_label31: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_SearchTokensVisitor].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 933, LOCATE_parser___ReduceAction___action};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_parser, 933);
-  nit_exit(1);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 0, LOCATE_parser___ReduceAction___init};
-  val_t *variable = NULL;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction0___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 938, LOCATE_parser___ReduceAction0___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[4] /*listnode3*/,  variable[5] /*listnode4*/) /*new AModule*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label32: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction0___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 951, LOCATE_parser___ReduceAction0___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction0].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label33: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction0].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction1___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 955, LOCATE_parser___ReduceAction1___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction1___action, LOCATE_parser, 962); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( variable[7] /*ppackagedeclnode2*/,  variable[5] /*listnode3*/,  variable[6] /*listnode4*/) /*new AModule*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label34: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction1___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 971, LOCATE_parser___ReduceAction1___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction1].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label35: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction1].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction2___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 975, LOCATE_parser___ReduceAction2___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction2___action, LOCATE_parser, 982); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode4*/)( variable[5] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[5] =  variable[7] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode4*/)( variable[5] /*listnode4*/,  variable[7] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode4*/,  variable[6] /*listnode5*/) /*new AModule*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label36: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction2___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 998, LOCATE_parser___ReduceAction2___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction2].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label37: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction2].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction3___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1002, LOCATE_parser___ReduceAction3___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction3___action, LOCATE_parser, 1010); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction3___action, LOCATE_parser, 1012); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode4*/,  variable[7] /*listnode5*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label38: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction3___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1028, LOCATE_parser___ReduceAction3___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction3].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label39: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction3].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction4___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1032, LOCATE_parser___ReduceAction4___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction4___action, LOCATE_parser, 1039); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode3*/,  variable[6] /*listnode5*/) /*new AModule*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label40: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction4___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1055, LOCATE_parser___ReduceAction4___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction4].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label41: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction4].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction5___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1059, LOCATE_parser___ReduceAction5___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction5___action, LOCATE_parser, 1067); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction5___action, LOCATE_parser, 1069); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode3*/,  variable[7] /*listnode5*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label42: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction5___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1085, LOCATE_parser___ReduceAction5___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction5].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label43: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction5].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction6___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1089, LOCATE_parser___ReduceAction6___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 1097); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 1106); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode4*/,  variable[7] /*listnode6*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label44: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction6___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1122, LOCATE_parser___ReduceAction6___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction6].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label45: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction6].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction7___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1126, LOCATE_parser___ReduceAction7___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 1135); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 1137); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 1146); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/) /*new AModule*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label46: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction7___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1162, LOCATE_parser___ReduceAction7___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction7].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label47: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction7].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction8___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1166, LOCATE_parser___ReduceAction8___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction8___action, LOCATE_parser, 1175); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*ppropdefnode5*/)( variable[9] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[9] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[8] /*listnode6*/) /*new ATopClassdef*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pclassdefnode4*/)( variable[10] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode7*/)( variable[7] /*listnode7*/,  variable[10] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode3*/,  variable[7] /*listnode7*/) /*new AModule*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label48: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction8___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1193, LOCATE_parser___ReduceAction8___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction8].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label49: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction8].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction9___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1197, LOCATE_parser___ReduceAction9___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction9___action, LOCATE_parser, 1207); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction9___action, LOCATE_parser, 1209); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode7*/)( variable[9] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[11] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode7*/) /*new ATopClassdef*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/) /*new AModule*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label50: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction9___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1234, LOCATE_parser___ReduceAction9___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction9].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label51: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction9].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction10___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1238, LOCATE_parser___ReduceAction10___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction10___action, LOCATE_parser, 1247); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction10___action, LOCATE_parser, 1250); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode6*/)( variable[10] /*listnode6*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode6*/) /*new ATopClassdef*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode4*/)( variable[12] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode3*/,  variable[8] /*listnode7*/) /*new AModule*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label52: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction10___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1268, LOCATE_parser___ReduceAction10___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction10].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label53: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction10].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction11___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1272, LOCATE_parser___ReduceAction11___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1282); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1285); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1287); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode6*/)( variable[13] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[13] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode4*/)( variable[14] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label54: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction11___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1312, LOCATE_parser___ReduceAction11___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction11].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label55: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction11].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction12___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1316, LOCATE_parser___ReduceAction12___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1325); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1335); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/) /*new ATopClassdef*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode4*/,  variable[8] /*listnode8*/) /*new AModule*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label56: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction12___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1353, LOCATE_parser___ReduceAction12___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction12].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label57: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction12].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction13___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1357, LOCATE_parser___ReduceAction13___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1367); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1377); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1379); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode8*/)( variable[11] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label58: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction13___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1404, LOCATE_parser___ReduceAction13___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction13].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label59: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction13].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction14___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1408, LOCATE_parser___ReduceAction14___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1418); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1420); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1430); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode4*/,  variable[9] /*listnode8*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label60: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction14___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1448, LOCATE_parser___ReduceAction14___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction14].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label61: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction14].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction15___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1452, LOCATE_parser___ReduceAction15___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1463); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1465); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1475); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1477); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/) /*new ATopClassdef*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label62: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction15___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1502, LOCATE_parser___ReduceAction15___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction15].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label63: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction15].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction16___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1506, LOCATE_parser___ReduceAction16___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction16___action, LOCATE_parser, 1515); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction16___action, LOCATE_parser, 1518); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode6*/)( variable[11] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/) /*new ATopClassdef*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode8*/)( variable[8] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[9] /*listnode4*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode5*/)( variable[12] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/) /*new AModule*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label64: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction16___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1543, LOCATE_parser___ReduceAction16___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction16].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label65: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction16].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction17___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1547, LOCATE_parser___ReduceAction17___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1557); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1560); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1562); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode8*/)( variable[11] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode8*/)( variable[11] /*listnode8*/,  variable[13] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode8*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label66: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction17___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1594, LOCATE_parser___ReduceAction17___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction17].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label67: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction17].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction18___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1598, LOCATE_parser___ReduceAction18___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1608); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1610); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1613); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode8*/)( variable[9] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[11] /*listnode4*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode5*/)( variable[14] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label68: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction18___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1638, LOCATE_parser___ReduceAction18___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction18].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label69: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction18].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction19___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1642, LOCATE_parser___ReduceAction19___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1653); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1655); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1658); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1660); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/) /*new ATopClassdef*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode5*/)( variable[16] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label70: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction19___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1692, LOCATE_parser___ReduceAction19___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction19].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label71: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction19].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction20___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1696, LOCATE_parser___ReduceAction20___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1706); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1715); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1718); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode7*/)( variable[13] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/) /*new ATopClassdef*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[11] /*listnode5*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode6*/)( variable[14] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label72: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction20___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1743, LOCATE_parser___ReduceAction20___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction20].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label73: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction20].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction21___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1747, LOCATE_parser___ReduceAction21___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1758); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1767); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1770); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1772); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode9*/)( variable[13] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[15] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode9*/) /*new ATopClassdef*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label74: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction21___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1804, LOCATE_parser___ReduceAction21___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction21].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label75: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction21].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction22___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1808, LOCATE_parser___ReduceAction22___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1819); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1821); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1830); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1833); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/) /*new ATopClassdef*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[13] /*listnode5*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode6*/)( variable[16] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label76: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction22___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1858, LOCATE_parser___ReduceAction22___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction22].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label77: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction22].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction23___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1862, LOCATE_parser___ReduceAction23___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1874); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1876); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1885); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1888); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1890); nit_exit(1);}
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    /* Register variable[18]: Result */
-    variable[18] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode9*/) /*new ATopClassdef*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode6*/)( variable[18] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/) /*new AModule*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label78: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction23___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1922, LOCATE_parser___ReduceAction23___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction23].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label79: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction23].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction24___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1926, LOCATE_parser___ReduceAction24___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction24___action, LOCATE_parser, 1933); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclassdefnode4*/)( variable[7] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[5] /*listnode3*/,  variable[6] /*listnode5*/) /*new AModule*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label80: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction24___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1945, LOCATE_parser___ReduceAction24___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction24].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label81: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction24].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction25___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1949, LOCATE_parser___ReduceAction25___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction25___action, LOCATE_parser, 1957); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction25___action, LOCATE_parser, 1959); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode4*/)( variable[9] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( variable[8] /*ppackagedeclnode2*/,  variable[6] /*listnode3*/,  variable[7] /*listnode5*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label82: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction25___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 1971, LOCATE_parser___ReduceAction25___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction25].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label83: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction25].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction26___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 1975, LOCATE_parser___ReduceAction26___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1983); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1992); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode4*/,  variable[7] /*listnode6*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label84: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction26___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2004, LOCATE_parser___ReduceAction26___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction26].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label85: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction26].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction27___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2008, LOCATE_parser___ReduceAction27___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 2017); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 2019); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 2028); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/) /*new AModule*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label86: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction27___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2040, LOCATE_parser___ReduceAction27___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction27].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label87: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction27].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction28___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2044, LOCATE_parser___ReduceAction28___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction28___action, LOCATE_parser, 2052); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction28___action, LOCATE_parser, 2054); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[8] /*listnode4*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pclassdefnode5*/)( variable[9] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[6] /*listnode3*/,  variable[7] /*listnode6*/) /*new AModule*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label88: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction28___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2073, LOCATE_parser___ReduceAction28___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction28].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label89: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction28].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction29___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2077, LOCATE_parser___ReduceAction29___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 2086); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 2088); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 2090); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[10] /*listnode4*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode5*/)( variable[11] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( variable[9] /*ppackagedeclnode2*/,  variable[7] /*listnode3*/,  variable[8] /*listnode6*/) /*new AModule*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label90: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction29___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2109, LOCATE_parser___ReduceAction29___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction29].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label91: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction29].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction30___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2113, LOCATE_parser___ReduceAction30___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 2122); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 2131); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable[11] /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 2133); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[10] /*listnode5*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode6*/)( variable[11] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[11] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode4*/,  variable[8] /*listnode7*/) /*new AModule*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label92: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction30___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2152, LOCATE_parser___ReduceAction30___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction30].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label93: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction30].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction31___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2156, LOCATE_parser___ReduceAction31___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2166); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2168); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2177); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2179); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode7*/)( variable[9] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[12] /*listnode5*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode6*/)( variable[13] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode7*/)( variable[9] /*listnode7*/,  variable[13] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode4*/,  variable[9] /*listnode7*/) /*new AModule*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label94: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction31___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2198, LOCATE_parser___ReduceAction31___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction31].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label95: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction31].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction32___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2202, LOCATE_parser___ReduceAction32___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2212); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*ppropdefnode5*/)( variable[10] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode6*/)( variable[9] /*listnode6*/,  variable[10] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[9] /*listnode6*/) /*new ATopClassdef*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable[12] /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2220); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pclassdefnode4*/)( variable[11] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[11] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[12] /*pclassdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*pclassdefnode7*/)( variable[12] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode8*/)( variable[8] /*listnode8*/,  variable[12] /*pclassdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[7] /*listnode3*/,  variable[8] /*listnode8*/) /*new AModule*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label96: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction32___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2235, LOCATE_parser___ReduceAction32___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction32].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label97: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction32].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction33___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2239, LOCATE_parser___ReduceAction33___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2250); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2252); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*ppropdefnode5*/)( variable[11] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[11] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode7*/)( variable[10] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode7*/)( variable[10] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[10] /*listnode7*/) /*new ATopClassdef*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2267); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label98: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction33___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2282, LOCATE_parser___ReduceAction33___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction33].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label99: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction33].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction34___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2286, LOCATE_parser___ReduceAction34___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2296); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2299); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode5*/)( variable[12] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[12] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode6*/) /*new ATopClassdef*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2307); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode4*/)( variable[13] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[13] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode7*/)( variable[14] /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode8*/)( variable[9] /*listnode8*/,  variable[14] /*pclassdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( variable[10] /*ppackagedeclnode2*/,  variable[8] /*listnode3*/,  variable[9] /*listnode8*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label100: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction34___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2322, LOCATE_parser___ReduceAction34___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction34].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label101: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction34].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction35___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2326, LOCATE_parser___ReduceAction35___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2337); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2340); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2342); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode5*/)( variable[13] /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*ppropdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode6*/)( variable[14] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode7*/)( variable[12] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[14] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode7*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2357); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode4*/)( variable[15] /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label102: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction35___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2372, LOCATE_parser___ReduceAction35___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction35].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label103: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction35].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction36___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2376, LOCATE_parser___ReduceAction36___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2386); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2396); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/) /*new ATopClassdef*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2404); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode4*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label104: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction36___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2419, LOCATE_parser___ReduceAction36___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction36].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label105: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction36].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction37___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2423, LOCATE_parser___ReduceAction37___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2434); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2444); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2446); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2461); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label106: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction37___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2476, LOCATE_parser___ReduceAction37___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction37].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label107: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction37].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction38___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2480, LOCATE_parser___ReduceAction38___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2491); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2493); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2503); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2511); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode4*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label108: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction38___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2526, LOCATE_parser___ReduceAction38___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction38].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label109: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction38].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction39___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2530, LOCATE_parser___ReduceAction39___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2542); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2544); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2554); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2556); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/) /*new ATopClassdef*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2571); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/) /*new AModule*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label110: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction39___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2586, LOCATE_parser___ReduceAction39___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction39].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label111: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction39].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction40___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2590, LOCATE_parser___ReduceAction40___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2600); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2603); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*ppropdefnode6*/)( variable[12] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[12] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[11] /*listnode7*/) /*new ATopClassdef*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2611); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode9*/)( variable[9] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[9] =  variable[10] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pclassdefnode5*/)( variable[13] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[13] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pclassdefnode8*/)( variable[14] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode9*/)( variable[9] /*listnode9*/,  variable[14] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[8] /*listnode3*/,  variable[9] /*listnode9*/) /*new AModule*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label112: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction40___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2633, LOCATE_parser___ReduceAction40___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction40].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label113: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction40].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction41___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2637, LOCATE_parser___ReduceAction41___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2648); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2651); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2653); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*ppropdefnode6*/)( variable[13] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[13] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode7*/)( variable[14] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[12] =  variable[14] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[14] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[12] /*listnode8*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2668); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[11] /*listnode4*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode3*/,  variable[10] /*listnode10*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label114: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction41___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2690, LOCATE_parser___ReduceAction41___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction41].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label115: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction41].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction42___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2694, LOCATE_parser___ReduceAction42___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2705); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2707); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2710); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode6*/)( variable[14] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode7*/)( variable[13] /*listnode7*/,  variable[14] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode7*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2718); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode9*/)( variable[10] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode4*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode5*/)( variable[15] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[15] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode8*/)( variable[16] /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode9*/)( variable[10] /*listnode9*/,  variable[16] /*pclassdefnode8*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( variable[11] /*ppackagedeclnode2*/,  variable[9] /*listnode3*/,  variable[10] /*listnode9*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label116: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction42___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2740, LOCATE_parser___ReduceAction42___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction42].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label117: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction42].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction43___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2744, LOCATE_parser___ReduceAction43___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2756); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2758); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2761); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2763); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode6*/)( variable[15] /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*ppropdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[16] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode8*/) /*new ATopClassdef*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2778); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[13] /*listnode4*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode5*/)( variable[17] /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode3*/,  variable[11] /*listnode10*/) /*new AModule*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label118: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction43___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2800, LOCATE_parser___ReduceAction43___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction43].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label119: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction43].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction44___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2804, LOCATE_parser___ReduceAction44___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2815); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2824); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2827); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[14] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*ppropdefnode7*/)( variable[14] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[13] /*listnode8*/) /*new ATopClassdef*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2835); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode5*/)( variable[12] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode10*/)( variable[10] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[10] =  variable[12] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[12] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pclassdefnode6*/)( variable[15] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[15] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pclassdefnode9*/)( variable[16] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode10*/)( variable[10] /*listnode10*/,  variable[16] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[9] /*listnode4*/,  variable[10] /*listnode10*/) /*new AModule*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label120: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction44___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2857, LOCATE_parser___ReduceAction44___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction44].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label121: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction44].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction45___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2861, LOCATE_parser___ReduceAction45___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2873); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2882); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2885); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2887); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*ppropdefnode7*/)( variable[15] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[15] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[16] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    /* Register variable[17]: Result */
-    variable[17] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode9*/)( variable[14] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[17])) { /*if*/
-      variable[14] =  variable[16] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[16] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[14] /*listnode9*/) /*new ATopClassdef*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2902); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode5*/)( variable[13] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode11*/)( variable[11] /*listnode11*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[13] /*listnode5*/ /*listnode11=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[13] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode10*/)( variable[18] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode11*/)( variable[11] /*listnode11*/,  variable[18] /*pclassdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable[10] /*listnode4*/,  variable[11] /*listnode11*/) /*new AModule*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label122: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction45___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2924, LOCATE_parser___ReduceAction45___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction45].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label123: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction45].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction46___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2928, LOCATE_parser___ReduceAction46___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2940); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2942); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[10] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2951); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2954); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*ppropdefnode7*/)( variable[16] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[16] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[15] /*listnode8*/) /*new ATopClassdef*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2962); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode5*/)( variable[14] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode10*/)( variable[11] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[11] =  variable[14] /*listnode5*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[14] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pclassdefnode6*/)( variable[17] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[17] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[18] /*pclassdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*pclassdefnode9*/)( variable[18] /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[11] /*listnode10*/)( variable[11] /*listnode10*/,  variable[18] /*pclassdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AModule_parser_prod___AModule___init_amodule( variable[12] /*ppackagedeclnode2*/,  variable[10] /*listnode4*/,  variable[11] /*listnode10*/) /*new AModule*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label124: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction46___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 2984, LOCATE_parser___ReduceAction46___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction46].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label125: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction46].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction47___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 2988, LOCATE_parser___ReduceAction47___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3001); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3003); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode3*/)( variable[14] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode4*/)( variable[11] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  variable[14] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3012); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3015); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3017); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable[17] /*ppropdefnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*ppropdefnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*ppropdefnode7*/)( variable[17] /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[17] /*ppropdefnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*listnode8*/)( variable[18] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[18] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef( variable[16] /*listnode9*/) /*new ATopClassdef*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 3032); nit_exit(1);}
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    /* Register variable[21]: Result */
-    variable[21] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode11*/)( variable[12] /*listnode11*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[12] =  variable[15] /*listnode5*/ /*listnode11=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable[19] /*pclassdefnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*pclassdefnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*pclassdefnode6*/)( variable[19] /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[19] /*pclassdefnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[20] /*pclassdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*pclassdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*pclassdefnode10*/)( variable[20] /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode11*/)( variable[12] /*listnode11*/,  variable[20] /*pclassdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AModule_parser_prod___AModule___init_amodule( variable[13] /*ppackagedeclnode2*/,  variable[11] /*listnode4*/,  variable[12] /*listnode11*/) /*new AModule*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pmodulenode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(0)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label126: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction47___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3054, LOCATE_parser___ReduceAction47___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction47].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label127: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction47].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction48___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3058, LOCATE_parser___ReduceAction48___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 3067); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwpackagenode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwpackagenode3*/, COLOR_TKwpackage, ID_TKwpackage)) /*cast TKwpackage*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 3069); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 3071); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_APackagedecl_parser_prod___APackagedecl___init_apackagedecl( variable[9] /*pdocnode2*/,  variable[10] /*tkwpackagenode3*/,  variable[11] /*tidnode4*/) /*new APackagedecl*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*ppackagedeclnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(1)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label128: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction48___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3080, LOCATE_parser___ReduceAction48___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction48].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label129: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction48].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction49___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3084, LOCATE_parser___ReduceAction49___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 3094); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwimportnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwimportnode3*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 3096); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 3098); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AImport_parser_prod___AImport___init_aimport( variable[10] /*pvisibilitynode2*/,  variable[11] /*tkwimportnode3*/,  variable[12] /*tidnode4*/) /*new AImport*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pimportnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label130: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction49___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3107, LOCATE_parser___ReduceAction49___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction49].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label131: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction49].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction50___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3111, LOCATE_parser___ReduceAction50___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 3121); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwimportnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwimportnode3*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 3123); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwendnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwendnode4*/, COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 3125); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ANoImport_parser_prod___ANoImport___init_anoimport( variable[10] /*pvisibilitynode2*/,  variable[11] /*tkwimportnode3*/,  variable[12] /*tkwendnode4*/) /*new ANoImport*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pimportnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(2)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label132: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction50___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3134, LOCATE_parser___ReduceAction50___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction50].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label133: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction50].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction51___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3138, LOCATE_parser___ReduceAction51___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction51___action, LOCATE_parser, 3144); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode2*/)( variable[6] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef( variable[5] /*listnode3*/) /*new AMainClassdef*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label134: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction51___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3154, LOCATE_parser___ReduceAction51___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction51].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label135: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction51].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction52___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3158, LOCATE_parser___ReduceAction52___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(3)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label136: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction52___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3165, LOCATE_parser___ReduceAction52___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction52].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label137: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction52].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction53___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3169, LOCATE_parser___ReduceAction53___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction53___action, LOCATE_parser, 3177); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode4*/)( variable[8] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[8] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[7] /*listnode5*/) /*new ABlockExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef( NIT_NULL /*null*/,  variable[9] /*pexprnode3*/) /*new AMainMethPropdef*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label138: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction53___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3191, LOCATE_parser___ReduceAction53___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction53].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label139: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction53].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction54___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3195, LOCATE_parser___ReduceAction54___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction54___action, LOCATE_parser, 3204); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction54___action, LOCATE_parser, 3206); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode4*/)( variable[9] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[9] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[10] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode6*/) /*new ABlockExpr*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef( NIT_NULL /*null*/,  variable[11] /*pexprnode3*/) /*new AMainMethPropdef*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(4)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label140: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction54___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3227, LOCATE_parser___ReduceAction54___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction54].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label141: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction54].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction55___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3231, LOCATE_parser___ReduceAction55___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3245); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3247); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3249); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3251); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*pclasskindnode5*/,  variable[17] /*tclassidnode6*/,  variable[11] /*listnode7*/,  variable[12] /*listnode8*/,  variable[13] /*listnode9*/) /*new AClassdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label142: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction55___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3265, LOCATE_parser___ReduceAction55___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction55].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label143: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction55].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction56___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3269, LOCATE_parser___ReduceAction56___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3284); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3286); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3288); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3290); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3292); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  variable[16] /*tkwredefnode3*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[12] /*listnode7*/,  variable[13] /*listnode8*/,  variable[14] /*listnode9*/) /*new AClassdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label144: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction56___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3306, LOCATE_parser___ReduceAction56___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction56].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label145: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction56].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction57___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3310, LOCATE_parser___ReduceAction57___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3325); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3327); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3329); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3331); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3333); nit_exit(1);}
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*listnode7*/)( variable[19] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    /* Register variable[20]: Result */
-    variable[20] = CALL_abstract_collection___Collection___is_empty( variable[12] /*listnode8*/)( variable[12] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[12] =  variable[19] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[12] /*listnode8*/)( variable[12] /*listnode8*/,  variable[19] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*pclasskindnode5*/,  variable[18] /*tclassidnode6*/,  variable[12] /*listnode8*/,  variable[13] /*listnode9*/,  variable[14] /*listnode10*/) /*new AClassdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label146: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction57___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3354, LOCATE_parser___ReduceAction57___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction57].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label147: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction57].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction58___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3358, LOCATE_parser___ReduceAction58___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3374); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3376); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3378); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3380); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3382); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3384); nit_exit(1);}
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    /* Register variable[22]: Result */
-    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[13] =  variable[21] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[13] /*listnode8*/,  variable[14] /*listnode9*/,  variable[15] /*listnode10*/) /*new AClassdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label148: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction58___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3405, LOCATE_parser___ReduceAction58___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction58].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label149: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction58].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction59___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3409, LOCATE_parser___ReduceAction59___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3424); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3426); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3428); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3430); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3432); nit_exit(1);}
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[19] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[19] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[19] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[19] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[19] /*listnode8*/)( variable[19] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[20])) { /*if*/
-    /* Register variable[20]: Result */
-    variable[20] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode9*/)( variable[13] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[20])) { /*if*/
-      variable[13] =  variable[19] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode9*/)( variable[13] /*listnode9*/,  variable[19] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode4*/,  variable[17] /*pclasskindnode5*/,  variable[18] /*tclassidnode6*/,  variable[12] /*listnode7*/,  variable[13] /*listnode9*/,  variable[14] /*listnode10*/) /*new AClassdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label150: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction59___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3453, LOCATE_parser___ReduceAction59___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction59].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label151: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction59].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction60___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3457, LOCATE_parser___ReduceAction60___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3473); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3475); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3477); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3479); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3481); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3483); nit_exit(1);}
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    /* Register variable[22]: Result */
-    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode9*/)( variable[14] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode9*/)( variable[14] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  variable[17] /*tkwredefnode3*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[13] /*listnode7*/,  variable[14] /*listnode9*/,  variable[15] /*listnode10*/) /*new AClassdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label152: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction60___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3504, LOCATE_parser___ReduceAction60___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction60].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label153: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction60].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction61___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3508, LOCATE_parser___ReduceAction61___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3524); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3526); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3528); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3530); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3532); nit_exit(1);}
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[20] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*listnode7*/)( variable[20] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    /* Register variable[21]: Result */
-    variable[21] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[21])) { /*if*/
-      variable[13] =  variable[20] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[20] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3541); nit_exit(1);}
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode9*/)( variable[21] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    /* Register variable[22]: Result */
-    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode10*/)( variable[14] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode10*/)( variable[14] /*listnode10*/,  variable[21] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[13] /*listnode8*/,  variable[14] /*listnode10*/,  variable[15] /*listnode11*/) /*new AClassdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label154: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction61___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3562, LOCATE_parser___ReduceAction61___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction61].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label155: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction61].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction62___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3566, LOCATE_parser___ReduceAction62___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3583); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3585); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3587); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[20] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3589); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[21] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3591); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3593); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    /* Register variable[23]: Result */
-    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[14] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3602); nit_exit(1);}
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    /* Register variable[24]: Result */
-    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode10*/)( variable[15] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[15] =  variable[23] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode10*/)( variable[15] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  variable[18] /*tkwredefnode3*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[14] /*listnode8*/,  variable[15] /*listnode10*/,  variable[16] /*listnode11*/) /*new AClassdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label156: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction62___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3623, LOCATE_parser___ReduceAction62___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction62].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label157: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction62].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction63___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3627, LOCATE_parser___ReduceAction63___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3643); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3645); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3647); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3649); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3651); nit_exit(1);}
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[20] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[20] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[20] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[20] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[20] /*ppropdefnode9*/)( variable[20] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[21])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode10*/)( variable[15] /*listnode10*/,  variable[20] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[16] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode4*/,  variable[18] /*pclasskindnode5*/,  variable[19] /*tclassidnode6*/,  variable[13] /*listnode7*/,  variable[14] /*listnode8*/,  variable[15] /*listnode10*/) /*new AClassdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label158: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction63___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3668, LOCATE_parser___ReduceAction63___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction63].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label159: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction63].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction64___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3672, LOCATE_parser___ReduceAction64___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3689); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3691); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3693); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3695); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3697); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3699); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[21] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*ppropdefnode9*/)( variable[21] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[21] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode10*/)( variable[22] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    /* Register variable[23]: Result */
-    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode11*/)( variable[16] /*listnode11*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[16] =  variable[22] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode8*/,  variable[16] /*listnode11*/) /*new AClassdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label160: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction64___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3723, LOCATE_parser___ReduceAction64___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction64].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label161: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction64].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction65___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3727, LOCATE_parser___ReduceAction65___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3744); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3746); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3748); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[20] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3750); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[21] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3752); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3754); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode9*/)( variable[22] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode10*/)( variable[16] /*listnode10*/,  variable[22] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  variable[18] /*tkwredefnode3*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode8*/,  variable[16] /*listnode10*/) /*new AClassdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label162: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction65___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3771, LOCATE_parser___ReduceAction65___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction65].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label163: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction65].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction66___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3775, LOCATE_parser___ReduceAction66___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3793); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3795); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3797); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[21] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3799); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[22] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3801); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3803); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3805); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode9*/)( variable[23] /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[23] /*ppropdefnode9*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode10*/)( variable[24] /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode11*/)( variable[17] /*listnode11*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode10*/ /*listnode11=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*listnode10*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode8*/,  variable[17] /*listnode11*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label164: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction66___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3829, LOCATE_parser___ReduceAction66___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction66].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label165: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction66].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction67___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3833, LOCATE_parser___ReduceAction67___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3850); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3852); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3854); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3856); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3858); nit_exit(1);}
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode7*/)( variable[21] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    /* Register variable[22]: Result */
-    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[14] /*listnode8*/)( variable[14] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[14] =  variable[21] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[21] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3867); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode8*/,  variable[15] /*listnode9*/,  variable[16] /*listnode11*/) /*new AClassdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label166: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction67___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3884, LOCATE_parser___ReduceAction67___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction67].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label167: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction67].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction68___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3888, LOCATE_parser___ReduceAction68___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3906); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3908); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[20] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3910); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[21] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3912); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3914); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    /* Register variable[23]: Result */
-    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3923); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3925); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode12*/)( variable[17] /*listnode12*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode9*/,  variable[17] /*listnode12*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label168: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction68___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 3949, LOCATE_parser___ReduceAction68___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction68].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label169: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction68].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction69___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 3953, LOCATE_parser___ReduceAction69___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3971); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3973); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3975); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[21] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3977); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[22] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3979); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3981); nit_exit(1);}
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    /* Register variable[24]: Result */
-    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[15] =  variable[23] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3990); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode9*/,  variable[17] /*listnode11*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label170: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction69___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4007, LOCATE_parser___ReduceAction69___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction69].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label171: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction69].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction70___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4011, LOCATE_parser___ReduceAction70___action};
-  val_t variable[29];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[19] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4030); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4032); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4034); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[22] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4036); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[23] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4038); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4040); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[25] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4049); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 4051); nit_exit(1);}
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    /* Register variable[27]: Result */
-    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode12*/)( variable[18] /*listnode12*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[27]: Local variable */
-  /* Register variable[28]: Result */
-  variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode9*/,  variable[18] /*listnode12*/) /*new AClassdef*/;
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[28]: Result */
-  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label172: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction70___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4075, LOCATE_parser___ReduceAction70___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction70].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label173: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction70].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction71___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4079, LOCATE_parser___ReduceAction71___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4096); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4098); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4100); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[20] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4102); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[21] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4104); nit_exit(1);}
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[21] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[21] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[21] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[21] /*listnode8*/)( variable[21] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[22])) { /*if*/
-    /* Register variable[22]: Result */
-    variable[22] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[22])) { /*if*/
-      variable[15] =  variable[21] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[21] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[22] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 4113); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[22] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*ppropdefnode10*/)( variable[22] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode11*/)( variable[16] /*listnode11*/,  variable[22] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[17] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode4*/,  variable[19] /*pclasskindnode5*/,  variable[20] /*tclassidnode6*/,  variable[14] /*listnode7*/,  variable[15] /*listnode9*/,  variable[16] /*listnode11*/) /*new AClassdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label174: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction71___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4130, LOCATE_parser___ReduceAction71___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction71].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label175: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction71].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction72___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4134, LOCATE_parser___ReduceAction72___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4152); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4154); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[20] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4156); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[21] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4158); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4160); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode8*/)( variable[22] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    /* Register variable[23]: Result */
-    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[16] =  variable[22] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[22] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[23] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4169); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4171); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[23] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*ppropdefnode10*/)( variable[23] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[23] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode11*/)( variable[24] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode12*/)( variable[17] /*listnode12*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode9*/,  variable[17] /*listnode12*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label176: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction72___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4195, LOCATE_parser___ReduceAction72___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction72].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label177: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction72].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction73___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4199, LOCATE_parser___ReduceAction73___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4217); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4219); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4221); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[21] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4223); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[22] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4225); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4227); nit_exit(1);}
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode8*/)( variable[23] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    /* Register variable[24]: Result */
-    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode9*/)( variable[16] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode9*/)( variable[16] /*listnode9*/,  variable[23] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4236); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode10*/)( variable[24] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode11*/)( variable[17] /*listnode11*/,  variable[24] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  variable[19] /*tkwredefnode3*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[15] /*listnode7*/,  variable[16] /*listnode9*/,  variable[17] /*listnode11*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label178: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction73___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4253, LOCATE_parser___ReduceAction73___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction73].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label179: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction73].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction74___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4257, LOCATE_parser___ReduceAction74___action};
-  val_t variable[29];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[19] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4276); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4278); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4280); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[22] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4282); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[23] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4284); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4286); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode8*/)( variable[24] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode9*/)( variable[17] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode9*/)( variable[17] /*listnode9*/,  variable[24] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable[25] /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4295); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*listnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4297); nit_exit(1);}
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode10*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode10*/)( variable[25] /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[25] /*ppropdefnode10*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode11*/)( variable[26] /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    /* Register variable[27]: Result */
-    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode12*/)( variable[18] /*listnode12*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode11*/ /*listnode12=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*listnode11*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[27]: Local variable */
-  /* Register variable[28]: Result */
-  variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode7*/,  variable[17] /*listnode9*/,  variable[18] /*listnode12*/) /*new AClassdef*/;
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[28]: Result */
-  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label180: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction74___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4321, LOCATE_parser___ReduceAction74___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction74].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label181: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction74].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction75___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4325, LOCATE_parser___ReduceAction75___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[18] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4343); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4345); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[20] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4347); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[21] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4349); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[22] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4351); nit_exit(1);}
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[22] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[22] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[22] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[22] /*listnode7*/)( variable[22] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[23])) { /*if*/
-    /* Register variable[23]: Result */
-    variable[23] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode8*/)( variable[15] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[23])) { /*if*/
-      variable[15] =  variable[22] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode8*/)( variable[15] /*listnode8*/,  variable[22] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4360); nit_exit(1);}
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode9*/)( variable[23] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    /* Register variable[24]: Result */
-    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode10*/)( variable[16] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode10*/)( variable[16] /*listnode10*/,  variable[23] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4369); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[24] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*ppropdefnode11*/)( variable[24] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[17] /*listnode12*/)( variable[17] /*listnode12*/,  variable[24] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[18] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode4*/,  variable[20] /*pclasskindnode5*/,  variable[21] /*tclassidnode6*/,  variable[15] /*listnode8*/,  variable[16] /*listnode10*/,  variable[17] /*listnode12*/) /*new AClassdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label182: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction75___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4386, LOCATE_parser___ReduceAction75___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction75].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label183: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction75].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction76___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4390, LOCATE_parser___ReduceAction76___action};
-  val_t variable[29];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[19] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4409); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4411); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[21] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4413); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[22] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4415); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[23] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4417); nit_exit(1);}
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[23] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[23] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[23] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[23] /*listnode7*/)( variable[23] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[24])) { /*if*/
-    /* Register variable[24]: Result */
-    variable[24] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[24])) { /*if*/
-      variable[16] =  variable[23] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[23] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4426); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode9*/)( variable[24] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode10*/)( variable[17] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[17] =  variable[24] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode10*/)( variable[17] /*listnode10*/,  variable[24] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[25] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4435); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*listnode12*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4437); nit_exit(1);}
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[25] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*ppropdefnode11*/)( variable[25] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode13*/)( variable[18] /*listnode13*/,  variable[25] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode12*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode12*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode12*/)( variable[26] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    /* Register variable[27]: Result */
-    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode13*/)( variable[18] /*listnode13*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode12*/ /*listnode13=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode13*/)( variable[18] /*listnode13*/,  variable[26] /*listnode12*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[27]: Local variable */
-  /* Register variable[28]: Result */
-  variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode4*/,  variable[21] /*pclasskindnode5*/,  variable[22] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode10*/,  variable[18] /*listnode13*/) /*new AClassdef*/;
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[28]: Result */
-  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label184: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction76___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4461, LOCATE_parser___ReduceAction76___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction76].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label185: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction76].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction77___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4465, LOCATE_parser___ReduceAction77___action};
-  val_t variable[29];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[19] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4484); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4486); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4488); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[22] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4490); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[23] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4492); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[24] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4494); nit_exit(1);}
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[24] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[24] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[24] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[24] /*listnode7*/)( variable[24] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[25])) { /*if*/
-    /* Register variable[25]: Result */
-    variable[25] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode8*/)( variable[16] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[25])) { /*if*/
-      variable[16] =  variable[24] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode8*/)( variable[16] /*listnode8*/,  variable[24] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4503); nit_exit(1);}
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*listnode9*/)( variable[25] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    /* Register variable[26]: Result */
-    variable[26] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode10*/)( variable[17] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[17] =  variable[25] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode10*/)( variable[17] /*listnode10*/,  variable[25] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4512); nit_exit(1);}
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[26] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*ppropdefnode11*/)( variable[26] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[18] /*listnode12*/)( variable[18] /*listnode12*/,  variable[26] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[27]: Local variable */
-  /* Register variable[28]: Result */
-  variable[28] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[19] /*pdocnode2*/,  variable[20] /*tkwredefnode3*/,  variable[21] /*pvisibilitynode4*/,  variable[22] /*pclasskindnode5*/,  variable[23] /*tclassidnode6*/,  variable[16] /*listnode8*/,  variable[17] /*listnode10*/,  variable[18] /*listnode12*/) /*new AClassdef*/;
-  variable[27] = variable[28];
-  variable[3] =  variable[27] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[28]: Result */
-  variable[28] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[28],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label186: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction77___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4529, LOCATE_parser___ReduceAction77___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction77].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label187: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction77].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction78___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4533, LOCATE_parser___ReduceAction78___action};
-  val_t variable[31];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[16] /*nodearraylist1*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[20] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4553); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[15] /*nodearraylist2*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4555); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[14] /*nodearraylist3*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4557); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[13] /*nodearraylist4*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable[23] /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4559); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[11] /*nodearraylist6*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[24] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4561); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[10] /*nodearraylist7*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[25] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4563); nit_exit(1);}
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[25] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[25] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[25] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[25] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[25] /*listnode7*/)( variable[25] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[26])) { /*if*/
-    /* Register variable[26]: Result */
-    variable[26] = CALL_abstract_collection___Collection___is_empty( variable[17] /*listnode8*/)( variable[17] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[26])) { /*if*/
-      variable[17] =  variable[25] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  variable[25] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[9] /*nodearraylist8*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*listnode9*/==NIT_NULL) || VAL_ISA( variable[26] /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4572); nit_exit(1);}
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[26] /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable[26] /*listnode9*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[26] /*listnode9*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[26] /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[26] /*listnode9*/)( variable[26] /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[27])) { /*if*/
-    /* Register variable[27]: Result */
-    variable[27] = CALL_abstract_collection___Collection___is_empty( variable[18] /*listnode10*/)( variable[18] /*listnode10*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[27])) { /*if*/
-      variable[18] =  variable[26] /*listnode9*/ /*listnode10=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[18] /*listnode10*/)( variable[18] /*listnode10*/,  variable[26] /*listnode9*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[8] /*nodearraylist9*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable[27] /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4581); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  variable[28] =  variable[6] /*nodearraylist11*/;
-  /* Register variable[29]: Result */
-  variable[29] = TAG_Bool(( variable[28] /*listnode12*/==NIT_NULL) || VAL_ISA( variable[28] /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[29])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4583); nit_exit(1);}
-  /* Register variable[29]: Result */
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[27] /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable[27] /*ppropdefnode11*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[27] /*ppropdefnode11*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[27] /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[27] /*ppropdefnode11*/)( variable[27] /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[29])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[19] /*listnode13*/)( variable[19] /*listnode13*/,  variable[27] /*ppropdefnode11*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[29]: Result */
-  variable[29] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[28] /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable[28] /*listnode12*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[28] /*listnode12*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[28] /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[28] /*listnode12*/)( variable[28] /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[29])) { /*if*/
-    /* Register variable[29]: Result */
-    variable[29] = CALL_abstract_collection___Collection___is_empty( variable[19] /*listnode13*/)( variable[19] /*listnode13*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[29])) { /*if*/
-      variable[19] =  variable[28] /*listnode12*/ /*listnode13=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[19] /*listnode13*/)( variable[19] /*listnode13*/,  variable[28] /*listnode12*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[29]: Local variable */
-  /* Register variable[30]: Result */
-  variable[30] = NEW_AClassdef_parser_prod___AClassdef___init_aclassdef( variable[20] /*pdocnode2*/,  variable[21] /*tkwredefnode3*/,  variable[22] /*pvisibilitynode4*/,  variable[23] /*pclasskindnode5*/,  variable[24] /*tclassidnode6*/,  variable[17] /*listnode8*/,  variable[18] /*listnode10*/,  variable[19] /*listnode13*/) /*new AClassdef*/;
-  variable[29] = variable[30];
-  variable[3] =  variable[29] /*pclassdefnode1*/ /*node_list=*/;
-  /* Register variable[30]: Result */
-  variable[30] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(5)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[30],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label188: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction78___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4607, LOCATE_parser___ReduceAction78___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction78].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label189: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction78].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction79___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4611, LOCATE_parser___ReduceAction79___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwclassnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwclassnode2*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction79___action, LOCATE_parser, 4616); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind( variable[5] /*tkwclassnode2*/) /*new AConcreteClasskind*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label190: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction79___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4623, LOCATE_parser___ReduceAction79___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction79].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label191: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction79].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction80___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4627, LOCATE_parser___ReduceAction80___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwabstractnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwabstractnode2*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction80___action, LOCATE_parser, 4633); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwclassnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwclassnode3*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction80___action, LOCATE_parser, 4635); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind( variable[6] /*tkwabstractnode2*/,  variable[7] /*tkwclassnode3*/) /*new AAbstractClasskind*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pclasskindnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label192: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction80___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4643, LOCATE_parser___ReduceAction80___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction80].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label193: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction80].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction81___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4647, LOCATE_parser___ReduceAction81___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwinterfacenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwinterfacenode2*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction81___action, LOCATE_parser, 4652); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind( variable[5] /*tkwinterfacenode2*/) /*new AInterfaceClasskind*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label194: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction81___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4659, LOCATE_parser___ReduceAction81___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction81].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label195: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction81].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction82___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4663, LOCATE_parser___ReduceAction82___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwuniversalnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwuniversalnode2*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction82___action, LOCATE_parser, 4668); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind( variable[5] /*tkwuniversalnode2*/) /*new AUniversalClasskind*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pclasskindnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(6)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label196: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction82___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4675, LOCATE_parser___ReduceAction82___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction82].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label197: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction82].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction83___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4679, LOCATE_parser___ReduceAction83___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction83___action, LOCATE_parser, 4689); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pformaldefnode1*/)( variable[10] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label198: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction83___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4696, LOCATE_parser___ReduceAction83___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction83].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label199: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction83].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction84___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4700, LOCATE_parser___ReduceAction84___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[11] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction84___action, LOCATE_parser, 4711); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction84___action, LOCATE_parser, 4713); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pformaldefnode1*/)( variable[11] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label200: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction84___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4727, LOCATE_parser___ReduceAction84___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction84].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label201: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction84].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction85___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4731, LOCATE_parser___ReduceAction85___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction85___action, LOCATE_parser, 4738); nit_exit(1);}
-  variable[3] =  variable[7] /*pformaldefnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(8)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label202: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction85___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4742, LOCATE_parser___ReduceAction85___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction85].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label203: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction85].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction86___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4746, LOCATE_parser___ReduceAction86___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction86___action, LOCATE_parser, 4751); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef( variable[5] /*tclassidnode2*/,  NIT_NULL /*null*/) /*new AFormaldef*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pformaldefnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label204: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction86___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4759, LOCATE_parser___ReduceAction86___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction86].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label205: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction86].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction87___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4763, LOCATE_parser___ReduceAction87___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction87___action, LOCATE_parser, 4769); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction87___action, LOCATE_parser, 4771); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef( variable[6] /*tclassidnode2*/,  variable[7] /*ptypenode3*/) /*new AFormaldef*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pformaldefnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(9)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label206: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction87___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4779, LOCATE_parser___ReduceAction87___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction87].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label207: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction87].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction88___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4783, LOCATE_parser___ReduceAction88___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwspecialnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwspecialnode2*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction88___action, LOCATE_parser, 4791); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction88___action, LOCATE_parser, 4793); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass( variable[8] /*tkwspecialnode2*/,  variable[9] /*ptypenode3*/) /*new ASuperclass*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psuperclassnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(10)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label208: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction88___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4801, LOCATE_parser___ReduceAction88___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction88].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label209: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction88].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction89___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4805, LOCATE_parser___ReduceAction89___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction89___action, LOCATE_parser, 4811); nit_exit(1);}
-  variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(11)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label210: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction89___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4815, LOCATE_parser___ReduceAction89___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction89].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label211: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction89].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction90___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4819, LOCATE_parser___ReduceAction90___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4830); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4832); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4834); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4836); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4838); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4840); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label212: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction90___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4853, LOCATE_parser___ReduceAction90___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction90].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label213: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction90].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction91___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4857, LOCATE_parser___ReduceAction91___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4869); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4871); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4873); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4875); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4877); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4879); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4881); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label214: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction91___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4894, LOCATE_parser___ReduceAction91___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction91].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label215: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction91].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction92___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4898, LOCATE_parser___ReduceAction92___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4910); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4912); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4914); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4916); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4918); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4920); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label216: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction92___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4933, LOCATE_parser___ReduceAction92___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction92].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label217: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction92].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction93___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4937, LOCATE_parser___ReduceAction93___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4950); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4952); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4954); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4956); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4958); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4960); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4962); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label218: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction93___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 4975, LOCATE_parser___ReduceAction93___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction93].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label219: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction93].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction94___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 4979, LOCATE_parser___ReduceAction94___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4990); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4992); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4994); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4996); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4998); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/) /*new ADeferredMethPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label220: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction94___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5010, LOCATE_parser___ReduceAction94___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction94].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label221: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction94].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction95___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5014, LOCATE_parser___ReduceAction95___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5026); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5028); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5030); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5032); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5034); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 5036); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/) /*new ADeferredMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label222: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction95___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5048, LOCATE_parser___ReduceAction95___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction95].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label223: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction95].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction96___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5052, LOCATE_parser___ReduceAction96___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 5063); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 5065); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 5067); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 5069); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 5071); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/) /*new AInternMethPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label224: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction96___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5083, LOCATE_parser___ReduceAction96___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction96].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label225: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction96].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction97___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5087, LOCATE_parser___ReduceAction97___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5099); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5101); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5103); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5105); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5107); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5109); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/) /*new AInternMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label226: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction97___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5121, LOCATE_parser___ReduceAction97___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction97].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label227: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction97].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction98___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5125, LOCATE_parser___ReduceAction98___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5136); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5138); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5140); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5142); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5144); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/) /*new AExternMethPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label228: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction98___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5157, LOCATE_parser___ReduceAction98___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction98].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label229: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction98].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction99___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5161, LOCATE_parser___ReduceAction99___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5173); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5175); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5177); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5179); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5181); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5183); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/) /*new AExternMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label230: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction99___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5196, LOCATE_parser___ReduceAction99___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction99].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label231: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction99].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction100___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5200, LOCATE_parser___ReduceAction100___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5212); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5214); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5216); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5218); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5220); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5222); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/) /*new AExternMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label232: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction100___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5235, LOCATE_parser___ReduceAction100___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction100].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label233: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction100].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction101___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5239, LOCATE_parser___ReduceAction101___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5252); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5254); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5256); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5258); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5260); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5262); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5264); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/) /*new AExternMethPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label234: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction101___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5277, LOCATE_parser___ReduceAction101___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction101].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label235: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction101].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction102___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5281, LOCATE_parser___ReduceAction102___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5291); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5293); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5299); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5305); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5307); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5309); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  variable[14] /*pablenode6*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode10*/,  variable[16] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label236: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction102___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5325, LOCATE_parser___ReduceAction102___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction102].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label237: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction102].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction103___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5329, LOCATE_parser___ReduceAction103___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5340); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5342); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5348); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5350); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode7*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5356); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5358); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5360); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label238: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction103___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5376, LOCATE_parser___ReduceAction103___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction103].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label239: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction103].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction104___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5380, LOCATE_parser___ReduceAction104___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5389); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5391); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[10] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5397); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5399); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5401); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  variable[11] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  variable[13] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[14] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label240: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction104___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5417, LOCATE_parser___ReduceAction104___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction104].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label241: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction104].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction105___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5421, LOCATE_parser___ReduceAction105___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5432); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5434); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5436); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5442); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5448); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5450); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5452); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label242: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction105___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5468, LOCATE_parser___ReduceAction105___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction105].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label243: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction105].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction106___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5472, LOCATE_parser___ReduceAction106___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5484); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5486); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5488); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5494); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5496); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5502); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5504); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5506); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label244: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction106___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5522, LOCATE_parser___ReduceAction106___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction106].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label245: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction106].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction107___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5526, LOCATE_parser___ReduceAction107___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5536); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5538); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5540); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[11] /*tkwredefnode4*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5546); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5548); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5550); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label246: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction107___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5566, LOCATE_parser___ReduceAction107___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction107].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label247: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction107].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction108___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5570, LOCATE_parser___ReduceAction108___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5579); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5581); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[10] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5587); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5589); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5591); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pablenode4*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  variable[13] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[14] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label248: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction108___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5607, LOCATE_parser___ReduceAction108___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction108].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label249: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction108].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction109___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5611, LOCATE_parser___ReduceAction109___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5621); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5623); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5625); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[11] /*tkwredefnode5*/,  variable[12] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5631); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5633); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5635); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label250: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction109___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5651, LOCATE_parser___ReduceAction109___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction109].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label251: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction109].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction110___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5655, LOCATE_parser___ReduceAction110___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5663); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[9] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5665); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5667); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5669); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[8] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[9] /*pvisibilitynode6*/,  variable[10] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[11] /*tattridnode9*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label252: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction110___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5685, LOCATE_parser___ReduceAction110___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction110].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label253: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction110].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction111___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5689, LOCATE_parser___ReduceAction111___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5700); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5702); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5708); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5714); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5716); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5718); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5720); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  variable[16] /*tkwredefnode9*/,  variable[17] /*pvisibilitynode10*/,  variable[18] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label254: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction111___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5736, LOCATE_parser___ReduceAction111___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction111].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label255: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction111].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction112___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5740, LOCATE_parser___ReduceAction112___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5752); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5754); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5760); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5762); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5768); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5770); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5772); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5774); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label256: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction112___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5790, LOCATE_parser___ReduceAction112___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction112].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label257: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction112].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction113___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5794, LOCATE_parser___ReduceAction113___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5804); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5806); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5812); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5814); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5816); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5818); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label258: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction113___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5834, LOCATE_parser___ReduceAction113___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction113].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label259: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction113].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction114___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5838, LOCATE_parser___ReduceAction114___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5850); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5852); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5854); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5860); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5866); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5868); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5870); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5872); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label260: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction114___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5888, LOCATE_parser___ReduceAction114___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction114].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label261: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction114].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction115___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5892, LOCATE_parser___ReduceAction115___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5905); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5907); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5909); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5915); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5917); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5923); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5925); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5927); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5929); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[23] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label262: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction115___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5945, LOCATE_parser___ReduceAction115___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction115].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label263: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction115].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction116___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5949, LOCATE_parser___ReduceAction116___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5960); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5962); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5964); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5970); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5972); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5974); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5976); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[18] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label264: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction116___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 5992, LOCATE_parser___ReduceAction116___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction116].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label265: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction116].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction117___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 5996, LOCATE_parser___ReduceAction117___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6006); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6008); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6014); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6016); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6018); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 6020); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  variable[15] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label266: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction117___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6036, LOCATE_parser___ReduceAction117___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction117].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label267: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction117].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction118___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6040, LOCATE_parser___ReduceAction118___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6051); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6053); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6055); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6061); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6063); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6065); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 6067); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[18] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label268: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction118___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6083, LOCATE_parser___ReduceAction118___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction118].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label269: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction118].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction119___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6087, LOCATE_parser___ReduceAction119___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6096); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6098); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[11] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6100); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6102); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[13] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6104); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*tkwredefnode5*/,  variable[11] /*pvisibilitynode6*/,  variable[12] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[13] /*tattridnode9*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label270: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction119___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6120, LOCATE_parser___ReduceAction119___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction119].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label271: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction119].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction120___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6124, LOCATE_parser___ReduceAction120___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6135); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6137); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6143); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6149); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6151); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6153); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6155); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode10*/,  variable[17] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[18] /*tattridnode13*/,  variable[19] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label272: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction120___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6171, LOCATE_parser___ReduceAction120___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction120].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label273: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction120].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction121___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6175, LOCATE_parser___ReduceAction121___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6187); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6189); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6195); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6197); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6203); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6205); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6207); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6209); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label274: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction121___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6225, LOCATE_parser___ReduceAction121___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction121].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label275: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction121].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction122___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6229, LOCATE_parser___ReduceAction122___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6239); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6241); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6247); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6249); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6251); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6253); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  variable[14] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[15] /*tattridnode11*/,  variable[16] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label276: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction122___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6269, LOCATE_parser___ReduceAction122___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction122].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label277: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction122].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction123___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6273, LOCATE_parser___ReduceAction123___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6285); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6287); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6289); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6295); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6301); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6303); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6305); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6307); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label278: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction123___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6323, LOCATE_parser___ReduceAction123___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction123].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label279: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction123].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction124___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6327, LOCATE_parser___ReduceAction124___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6340); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6342); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6344); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6350); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6352); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6358); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6360); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6362); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6364); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label280: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction124___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6380, LOCATE_parser___ReduceAction124___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction124].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label281: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction124].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction125___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6384, LOCATE_parser___ReduceAction125___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6395); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6397); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6399); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6405); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6407); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6409); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6411); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label282: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction125___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6427, LOCATE_parser___ReduceAction125___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction125].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label283: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction125].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction126___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6431, LOCATE_parser___ReduceAction126___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6441); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6443); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6449); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6451); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6453); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6455); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  variable[14] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[15] /*tattridnode11*/,  variable[16] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label284: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction126___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6471, LOCATE_parser___ReduceAction126___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction126].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label285: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction126].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction127___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6475, LOCATE_parser___ReduceAction127___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6486); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6488); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6490); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6496); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6498); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6500); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6502); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label286: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction127___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6518, LOCATE_parser___ReduceAction127___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction127].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label287: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction127].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction128___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6522, LOCATE_parser___ReduceAction128___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6531); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6533); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6535); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[12] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6537); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6539); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*pvisibilitynode6*/,  variable[11] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[12] /*tattridnode9*/,  variable[13] /*ptypenode10*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label288: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction128___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6555, LOCATE_parser___ReduceAction128___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction128].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label289: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction128].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction129___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6559, LOCATE_parser___ReduceAction129___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6571); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6573); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6579); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6585); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6587); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6589); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6591); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6593); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  variable[17] /*tkwredefnode9*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label290: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction129___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6609, LOCATE_parser___ReduceAction129___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction129].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label291: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction129].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction130___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6613, LOCATE_parser___ReduceAction130___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6626); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6628); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6634); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6636); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6642); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6644); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6646); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6648); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6650); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label292: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction130___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6666, LOCATE_parser___ReduceAction130___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction130].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label293: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction130].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction131___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6670, LOCATE_parser___ReduceAction131___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6681); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6683); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6689); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6691); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6693); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6695); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6697); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label294: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction131___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6713, LOCATE_parser___ReduceAction131___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction131].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label295: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction131].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction132___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6717, LOCATE_parser___ReduceAction132___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6730); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6732); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6734); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6740); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6746); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6748); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6750); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6752); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6754); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label296: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction132___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6770, LOCATE_parser___ReduceAction132___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction132].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label297: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction132].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction133___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6774, LOCATE_parser___ReduceAction133___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6788); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6790); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6792); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6798); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6800); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6806); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6808); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6810); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[5] /*nodearraylist9*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6812); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[25] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6814); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[24] /*tattridnode13*/,  variable[25] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label298: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction133___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6830, LOCATE_parser___ReduceAction133___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction133].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label299: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction133].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction134___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6834, LOCATE_parser___ReduceAction134___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6846); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6848); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6850); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6856); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6858); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6860); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6862); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6864); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  variable[20] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label300: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction134___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6880, LOCATE_parser___ReduceAction134___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction134].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label301: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction134].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction135___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6884, LOCATE_parser___ReduceAction135___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6895); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6897); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[12] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6903); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6905); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6907); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6909); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6911); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label302: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction135___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6927, LOCATE_parser___ReduceAction135___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction135].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label303: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction135].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction136___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6931, LOCATE_parser___ReduceAction136___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6943); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6945); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6947); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[13] /*tkwredefnode5*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6953); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6955); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6957); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6959); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6961); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  variable[20] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label304: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction136___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 6977, LOCATE_parser___ReduceAction136___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction136].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label305: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction136].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction137___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 6981, LOCATE_parser___ReduceAction137___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6991); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6993); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6995); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6997); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6999); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[15] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 7001); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[11] /*tkwredefnode5*/,  variable[12] /*pvisibilitynode6*/,  variable[13] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[14] /*tattridnode9*/,  variable[15] /*ptypenode10*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label306: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction137___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7017, LOCATE_parser___ReduceAction137___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction137].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label307: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction137].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction138___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7021, LOCATE_parser___ReduceAction138___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7034); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7036); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7042); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7048); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7050); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7052); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7054); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  variable[19] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[21] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label308: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction138___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7070, LOCATE_parser___ReduceAction138___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction138].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label309: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction138].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction139___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7074, LOCATE_parser___ReduceAction139___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7088); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7090); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7096); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7098); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7104); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7106); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7108); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7110); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label310: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction139___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7126, LOCATE_parser___ReduceAction139___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction139].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label311: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction139].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction140___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7130, LOCATE_parser___ReduceAction140___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7142); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7144); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7150); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7152); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7154); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7156); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label312: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction140___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7172, LOCATE_parser___ReduceAction140___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction140].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label313: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction140].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction141___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7176, LOCATE_parser___ReduceAction141___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7190); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7192); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7194); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7200); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7206); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7208); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7210); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7212); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label314: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction141___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7228, LOCATE_parser___ReduceAction141___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction141].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label315: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction141].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction142___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7232, LOCATE_parser___ReduceAction142___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7247); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7249); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7251); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7257); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7259); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7265); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7267); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7269); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7271); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  NIT_NULL /*null*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label316: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction142___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7287, LOCATE_parser___ReduceAction142___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction142].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label317: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction142].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction143___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7291, LOCATE_parser___ReduceAction143___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7304); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7306); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7308); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7314); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7316); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7318); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7320); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label318: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction143___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7336, LOCATE_parser___ReduceAction143___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction143].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label319: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction143].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction144___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7340, LOCATE_parser___ReduceAction144___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7352); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7354); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7360); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7362); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7364); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7366); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  variable[16] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label320: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction144___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7382, LOCATE_parser___ReduceAction144___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction144].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label321: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction144].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction145___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7386, LOCATE_parser___ReduceAction145___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7399); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7401); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7403); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode5*/,  variable[15] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7409); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7411); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7413); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7415); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label322: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction145___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7431, LOCATE_parser___ReduceAction145___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction145].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label323: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction145].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction146___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7435, LOCATE_parser___ReduceAction146___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7446); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7448); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7450); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7452); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7454); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode6*/,  variable[13] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[14] /*tattridnode9*/,  NIT_NULL /*null*/,  variable[15] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label324: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction146___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7470, LOCATE_parser___ReduceAction146___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction146].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label325: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction146].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction147___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7474, LOCATE_parser___ReduceAction147___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7488); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7490); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7496); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7502); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7504); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7506); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7508); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7510); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  variable[21] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label326: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction147___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7526, LOCATE_parser___ReduceAction147___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction147].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label327: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction147].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction148___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7530, LOCATE_parser___ReduceAction148___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7545); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7547); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7553); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7555); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7561); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7563); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7565); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7567); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7569); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label328: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction148___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7585, LOCATE_parser___ReduceAction148___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction148].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label329: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction148].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction149___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7589, LOCATE_parser___ReduceAction149___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7602); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7604); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7610); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7612); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7614); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7616); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7618); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label330: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction149___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7634, LOCATE_parser___ReduceAction149___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction149].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label331: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction149].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction150___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7638, LOCATE_parser___ReduceAction150___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7653); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7655); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7657); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7663); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7669); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7671); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7673); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7675); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7677); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  variable[23] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label332: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction150___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7693, LOCATE_parser___ReduceAction150___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction150].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label333: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction150].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction151___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7697, LOCATE_parser___ReduceAction151___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7713); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7715); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7717); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7723); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7725); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[22] = variable[23];
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7731); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[24] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7733); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[25] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7735); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7737); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7739); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  variable[23] /*tkwredefnode9*/,  variable[24] /*pvisibilitynode10*/,  variable[25] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[26] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label334: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction151___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7755, LOCATE_parser___ReduceAction151___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction151].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label335: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction151].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction152___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7759, LOCATE_parser___ReduceAction152___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7773); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7775); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7777); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7783); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7785); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7787); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7789); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7791); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  variable[20] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label336: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction152___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7807, LOCATE_parser___ReduceAction152___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction152].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label337: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction152].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction153___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7811, LOCATE_parser___ReduceAction153___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7824); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7826); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7832); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7834); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7836); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7838); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7840); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  variable[18] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label338: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction153___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7856, LOCATE_parser___ReduceAction153___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction153].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label339: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction153].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction154___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7860, LOCATE_parser___ReduceAction154___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7874); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7876); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7878); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7884); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7886); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7888); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7890); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7892); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  variable[20] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label340: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction154___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7908, LOCATE_parser___ReduceAction154___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction154].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label341: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction154].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction155___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7912, LOCATE_parser___ReduceAction155___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7924); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7926); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7928); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7930); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7932); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7934); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode5*/,  variable[14] /*pvisibilitynode6*/,  variable[15] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[16] /*tattridnode9*/,  NIT_NULL /*null*/,  variable[17] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label342: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction155___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 7950, LOCATE_parser___ReduceAction155___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction155].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label343: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction155].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction156___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 7954, LOCATE_parser___ReduceAction156___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7968); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7970); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7976); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7982); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7984); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7986); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7988); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7990); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  variable[20] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[21] /*tattridnode13*/,  variable[22] /*ptypenode14*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label344: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction156___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8006, LOCATE_parser___ReduceAction156___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction156].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label345: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction156].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction157___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8010, LOCATE_parser___ReduceAction157___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8025); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8027); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8033); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8035); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8041); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8043); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8045); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8047); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8049); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label346: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction157___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8065, LOCATE_parser___ReduceAction157___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction157].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label347: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction157].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction158___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8069, LOCATE_parser___ReduceAction158___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8082); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8084); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8090); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8092); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8094); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8096); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8098); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[18] /*tattridnode11*/,  variable[19] /*ptypenode12*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label348: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction158___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8114, LOCATE_parser___ReduceAction158___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction158].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label349: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction158].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction159___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8118, LOCATE_parser___ReduceAction159___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8133); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8135); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8137); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8143); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8149); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8151); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8153); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8155); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8157); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label350: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction159___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8173, LOCATE_parser___ReduceAction159___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction159].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label351: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction159].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction160___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8177, LOCATE_parser___ReduceAction160___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8193); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8195); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8197); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8203); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8205); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[22] = variable[23];
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8211); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8213); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8215); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8217); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8219); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  NIT_NULL /*null*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label352: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction160___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8235, LOCATE_parser___ReduceAction160___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction160].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label353: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction160].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction161___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8239, LOCATE_parser___ReduceAction161___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8253); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8255); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8257); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8263); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8265); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8267); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8269); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8271); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label354: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction161___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8287, LOCATE_parser___ReduceAction161___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction161].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label355: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction161].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction162___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8291, LOCATE_parser___ReduceAction162___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8304); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8306); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8312); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8314); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8316); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8318); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8320); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  variable[17] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[18] /*tattridnode11*/,  variable[19] /*ptypenode12*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label356: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction162___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8336, LOCATE_parser___ReduceAction162___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction162].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label357: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction162].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction163___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8340, LOCATE_parser___ReduceAction163___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8354); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8356); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8358); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8364); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8366); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8368); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8370); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8372); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label358: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction163___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8388, LOCATE_parser___ReduceAction163___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction163].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label359: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction163].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction164___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8392, LOCATE_parser___ReduceAction164___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8404); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8406); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8408); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8410); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8412); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8414); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode6*/,  variable[14] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[15] /*tattridnode9*/,  variable[16] /*ptypenode10*/,  variable[17] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label360: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction164___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8430, LOCATE_parser___ReduceAction164___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction164].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label361: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction164].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction165___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8434, LOCATE_parser___ReduceAction165___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8449); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8451); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8457); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8463); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8465); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8467); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8469); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8471); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8473); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  variable[22] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label362: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction165___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8489, LOCATE_parser___ReduceAction165___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction165].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label363: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction165].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction166___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8493, LOCATE_parser___ReduceAction166___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8509); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8511); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8517); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8519); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8525); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8527); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8529); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8531); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8533); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8535); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label364: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction166___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8551, LOCATE_parser___ReduceAction166___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction166].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label365: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction166].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction167___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8555, LOCATE_parser___ReduceAction167___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8569); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8571); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8577); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8579); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8581); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8583); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8585); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8587); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label366: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction167___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8603, LOCATE_parser___ReduceAction167___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction167].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label367: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction167].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction168___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8607, LOCATE_parser___ReduceAction168___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8623); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8625); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8627); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8633); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8639); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8641); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8643); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8645); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8647); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8649); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  variable[24] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label368: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction168___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8665, LOCATE_parser___ReduceAction168___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction168].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label369: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction168].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction169___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8669, LOCATE_parser___ReduceAction169___action};
-  val_t variable[32];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[16] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8686); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[15] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8688); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[14] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8690); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[18] /*tkwredefnode4*/,  variable[19] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist4*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8696); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[12] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8698); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[21] /*tkwredefnode7*/,  variable[22] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[23] = variable[24];
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[11] /*nodearraylist6*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8704); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[10] /*nodearraylist7*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[25] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8706); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[9] /*nodearraylist8*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable[26] /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8708); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[8] /*nodearraylist9*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[27] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8710); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  variable[28] =  variable[7] /*nodearraylist10*/;
-  /* Register variable[29]: Result */
-  variable[29] = TAG_Bool(( variable[28] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[28] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[29])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8712); nit_exit(1);}
-  /* Register variable[29]: Local variable */
-  variable[29] =  variable[4] /*nodearraylist13*/;
-  /* Register variable[30]: Result */
-  variable[30] = TAG_Bool(( variable[29] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[29] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[30])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8714); nit_exit(1);}
-  /* Register variable[30]: Local variable */
-  /* Register variable[31]: Result */
-  variable[31] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[17] /*pdocnode2*/,  variable[20] /*pablenode3*/,  variable[23] /*pablenode6*/,  variable[24] /*tkwredefnode9*/,  variable[25] /*pvisibilitynode10*/,  variable[26] /*tkwattrnode11*/,  NIT_NULL /*null*/,  variable[27] /*tattridnode13*/,  variable[28] /*ptypenode14*/,  variable[29] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[30] = variable[31];
-  variable[3] =  variable[30] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[31]: Result */
-  variable[31] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[31],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label370: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction169___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8730, LOCATE_parser___ReduceAction169___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction169].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label371: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction169].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction170___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8734, LOCATE_parser___ReduceAction170___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8749); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8751); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8753); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8759); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8761); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8763); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8765); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8767); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8769); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  NIT_NULL /*null*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  variable[21] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode11*/,  variable[23] /*ptypenode12*/,  variable[24] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label372: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction170___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8785, LOCATE_parser___ReduceAction170___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction170].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label373: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction170].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction171___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8789, LOCATE_parser___ReduceAction171___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8803); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8805); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8811); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8813); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8815); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8817); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8819); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8821); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  variable[19] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label374: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction171___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8837, LOCATE_parser___ReduceAction171___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction171].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label375: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction171].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction172___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8841, LOCATE_parser___ReduceAction172___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8856); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8858); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8860); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode5*/,  variable[17] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8866); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8868); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8870); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8872); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8874); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8876); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pablenode4*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  variable[21] /*tkwattrnode9*/,  NIT_NULL /*null*/,  variable[22] /*tattridnode11*/,  variable[23] /*ptypenode12*/,  variable[24] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label376: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction172___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8892, LOCATE_parser___ReduceAction172___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction172].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label377: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction172].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction173___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8896, LOCATE_parser___ReduceAction173___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8909); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8911); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8913); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8915); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8917); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8919); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8921); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode5*/,  variable[15] /*pvisibilitynode6*/,  variable[16] /*tkwattrnode7*/,  NIT_NULL /*null*/,  variable[17] /*tattridnode9*/,  variable[18] /*ptypenode10*/,  variable[19] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label378: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction173___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8937, LOCATE_parser___ReduceAction173___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction173].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label379: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction173].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction174___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8941, LOCATE_parser___ReduceAction174___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8951); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8953); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8959); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8965); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8967); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8969); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  variable[14] /*pablenode6*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode12*/,  variable[17] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label380: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction174___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 8985, LOCATE_parser___ReduceAction174___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction174].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label381: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction174].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction175___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 8989, LOCATE_parser___ReduceAction175___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9000); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9002); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9008); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9010); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode7*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9016); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9018); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 9020); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode12*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label382: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction175___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9036, LOCATE_parser___ReduceAction175___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction175].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label383: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction175].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction176___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9040, LOCATE_parser___ReduceAction176___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 9049); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 9051); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[10] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 9057); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 9059); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 9061); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  variable[11] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[13] /*tkwvarnode10*/,  variable[14] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label384: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction176___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9077, LOCATE_parser___ReduceAction176___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction176].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label385: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction176].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction177___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9081, LOCATE_parser___ReduceAction177___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9092); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9094); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9096); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9102); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9108); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9110); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 9112); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode12*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label386: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction177___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9128, LOCATE_parser___ReduceAction177___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction177].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label387: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction177].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction178___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9132, LOCATE_parser___ReduceAction178___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9144); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9146); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9148); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9154); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9156); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9162); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9164); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 9166); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode12*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label388: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction178___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9182, LOCATE_parser___ReduceAction178___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction178].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label389: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction178].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction179___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9186, LOCATE_parser___ReduceAction179___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9196); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9198); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9200); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[11] /*tkwredefnode4*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9206); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9208); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 9210); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[15] /*tkwvarnode10*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label390: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction179___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9226, LOCATE_parser___ReduceAction179___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction179].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label391: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction179].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction180___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9230, LOCATE_parser___ReduceAction180___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9239); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9241); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[10] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9247); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9249); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 9251); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pablenode4*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[13] /*tkwvarnode10*/,  variable[14] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label392: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction180___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9267, LOCATE_parser___ReduceAction180___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction180].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label393: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction180].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction181___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9271, LOCATE_parser___ReduceAction181___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9281); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9283); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9285); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[11] /*tkwredefnode5*/,  variable[12] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9291); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9293); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9295); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  NIT_NULL /*null*/,  variable[14] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[15] /*tkwvarnode10*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label394: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction181___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9311, LOCATE_parser___ReduceAction181___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction181].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label395: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction181].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction182___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9315, LOCATE_parser___ReduceAction182___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9323); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[9] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9325); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9327); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9329); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[8] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[9] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[10] /*tkwvarnode8*/,  variable[11] /*tattridnode9*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label396: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction182___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9345, LOCATE_parser___ReduceAction182___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction182].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label397: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction182].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction183___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9349, LOCATE_parser___ReduceAction183___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9360); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9362); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9368); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9374); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9376); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9378); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9380); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  variable[16] /*tkwredefnode9*/,  variable[17] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode12*/,  variable[19] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label398: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction183___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9396, LOCATE_parser___ReduceAction183___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction183].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label399: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction183].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction184___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9400, LOCATE_parser___ReduceAction184___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9412); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9414); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9420); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9422); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9428); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9430); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9432); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9434); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode12*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label400: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction184___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9450, LOCATE_parser___ReduceAction184___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction184].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label401: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction184].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction185___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9454, LOCATE_parser___ReduceAction185___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9464); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9466); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9472); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9474); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9476); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9478); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[15] /*tkwvarnode10*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label402: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction185___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9494, LOCATE_parser___ReduceAction185___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction185].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label403: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction185].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction186___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9498, LOCATE_parser___ReduceAction186___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9510); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9512); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9514); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9520); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9526); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9528); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9530); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9532); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  variable[18] /*tkwredefnode9*/,  variable[19] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode12*/,  variable[21] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label404: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction186___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9548, LOCATE_parser___ReduceAction186___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction186].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label405: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction186].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction187___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9552, LOCATE_parser___ReduceAction187___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9565); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9567); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9569); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9575); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9577); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9583); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9585); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9587); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9589); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[22] /*tkwvarnode12*/,  variable[23] /*tattridnode13*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label406: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction187___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9605, LOCATE_parser___ReduceAction187___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction187].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label407: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction187].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction188___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9609, LOCATE_parser___ReduceAction188___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9620); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9622); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9624); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9630); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9632); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9634); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9636); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[17] /*tkwvarnode10*/,  variable[18] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label408: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction188___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9652, LOCATE_parser___ReduceAction188___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction188].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label409: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction188].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction189___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9656, LOCATE_parser___ReduceAction189___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9666); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9668); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9674); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9676); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9678); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9680); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  variable[13] /*tkwredefnode7*/,  variable[14] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[15] /*tkwvarnode10*/,  variable[16] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label410: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction189___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9696, LOCATE_parser___ReduceAction189___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction189].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label411: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction189].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction190___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9700, LOCATE_parser___ReduceAction190___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9711); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9713); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9715); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9721); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9723); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9725); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9727); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  variable[15] /*tkwredefnode7*/,  variable[16] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[17] /*tkwvarnode10*/,  variable[18] /*tattridnode11*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label412: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction190___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9743, LOCATE_parser___ReduceAction190___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction190].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label413: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction190].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction191___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9747, LOCATE_parser___ReduceAction191___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction191___action, LOCATE_parser, 9756); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction191___action, LOCATE_parser, 9758); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[11] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction191___action, LOCATE_parser, 9760); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction191___action, LOCATE_parser, 9762); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[13] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction191___action, LOCATE_parser, 9764); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*tkwredefnode5*/,  variable[11] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[12] /*tkwvarnode8*/,  variable[13] /*tattridnode9*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label414: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction191___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9780, LOCATE_parser___ReduceAction191___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction191].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label415: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction191].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction192___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9784, LOCATE_parser___ReduceAction192___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9795); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9797); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9803); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9809); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9811); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9813); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9815); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  variable[15] /*pablenode6*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[17] /*tkwvarnode12*/,  variable[18] /*tattridnode13*/,  variable[19] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label416: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction192___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9831, LOCATE_parser___ReduceAction192___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction192].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label417: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction192].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction193___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9835, LOCATE_parser___ReduceAction193___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9847); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9849); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9855); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9857); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode7*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9863); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9865); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9867); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9869); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode12*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label418: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction193___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9885, LOCATE_parser___ReduceAction193___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction193].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label419: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction193].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction194___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9889, LOCATE_parser___ReduceAction194___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9899); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9901); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[11] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9907); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9909); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9911); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9913); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  variable[12] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[14] /*tkwvarnode10*/,  variable[15] /*tattridnode11*/,  variable[16] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label420: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction194___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9929, LOCATE_parser___ReduceAction194___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction194].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label421: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction194].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction195___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9933, LOCATE_parser___ReduceAction195___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9945); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9947); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9949); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9955); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9961); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9963); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9965); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9967); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode12*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label422: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction195___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 9983, LOCATE_parser___ReduceAction195___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction195].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label423: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction195].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction196___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 9987, LOCATE_parser___ReduceAction196___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10000); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10002); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10004); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10010); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10012); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10018); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10020); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10022); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 10024); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label424: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction196___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10040, LOCATE_parser___ReduceAction196___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction196].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label425: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction196].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction197___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10044, LOCATE_parser___ReduceAction197___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10055); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10057); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10059); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[12] /*tkwredefnode4*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10065); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10067); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10069); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 10071); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label426: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction197___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10087, LOCATE_parser___ReduceAction197___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction197].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label427: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction197].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction198___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10091, LOCATE_parser___ReduceAction198___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10101); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10103); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[11] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10109); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10111); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10113); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 10115); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pablenode4*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[14] /*tkwvarnode10*/,  variable[15] /*tattridnode11*/,  variable[16] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label428: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction198___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10131, LOCATE_parser___ReduceAction198___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction198].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label429: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction198].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction199___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10135, LOCATE_parser___ReduceAction199___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10146); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10148); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10150); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[12] /*tkwredefnode5*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10156); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10158); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10160); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 10162); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label430: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction199___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10178, LOCATE_parser___ReduceAction199___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction199].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label431: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction199].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction200___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10182, LOCATE_parser___ReduceAction200___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 10191); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 10193); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 10195); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[12] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 10197); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 10199); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[10] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[11] /*tkwvarnode8*/,  variable[12] /*tattridnode9*/,  variable[13] /*ptypenode10*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label432: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction200___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10215, LOCATE_parser___ReduceAction200___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction200].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label433: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction200].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction201___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10219, LOCATE_parser___ReduceAction201___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10231); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10233); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10239); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10245); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10247); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10249); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10251); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 10253); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  variable[16] /*pablenode6*/,  variable[17] /*tkwredefnode9*/,  variable[18] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode12*/,  variable[20] /*tattridnode13*/,  variable[21] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label434: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction201___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10269, LOCATE_parser___ReduceAction201___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction201].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label435: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction201].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction202___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10273, LOCATE_parser___ReduceAction202___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10286); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10288); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10294); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10296); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode7*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10302); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10304); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10306); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10308); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 10310); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label436: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction202___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10326, LOCATE_parser___ReduceAction202___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction202].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label437: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction202].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction203___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10330, LOCATE_parser___ReduceAction203___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10341); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10343); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[12] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10349); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10351); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10353); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10355); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 10357); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  variable[13] /*pablenode3*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label438: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction203___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10373, LOCATE_parser___ReduceAction203___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction203].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label439: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction203].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction204___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10377, LOCATE_parser___ReduceAction204___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10390); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10392); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10394); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10400); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10406); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10408); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10410); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10412); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 10414); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  variable[23] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label440: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction204___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10430, LOCATE_parser___ReduceAction204___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction204].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label441: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction204].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction205___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10434, LOCATE_parser___ReduceAction205___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10448); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10450); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10452); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10458); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10460); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10466); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10468); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10470); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[5] /*nodearraylist9*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10472); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[25] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 10474); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[23] /*tkwvarnode12*/,  variable[24] /*tattridnode13*/,  variable[25] /*ptypenode14*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label442: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction205___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10490, LOCATE_parser___ReduceAction205___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction205].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label443: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction205].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction206___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10494, LOCATE_parser___ReduceAction206___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10506); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10508); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10510); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[13] /*tkwredefnode4*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10516); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10518); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10520); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10522); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 10524); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  variable[20] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label444: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction206___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10540, LOCATE_parser___ReduceAction206___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction206].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label445: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction206].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction207___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10544, LOCATE_parser___ReduceAction207___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10555); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10557); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[12] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10563); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10565); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10567); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10569); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 10571); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pablenode4*/,  variable[14] /*tkwredefnode7*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  variable[18] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label446: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction207___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10587, LOCATE_parser___ReduceAction207___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction207].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label447: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction207].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction208___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10591, LOCATE_parser___ReduceAction208___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10603); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10605); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10607); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[13] /*tkwredefnode5*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10613); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10615); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10617); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10619); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[20] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 10621); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  variable[20] /*ptypenode12*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label448: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction208___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10637, LOCATE_parser___ReduceAction208___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction208].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label449: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction208].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction209___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10641, LOCATE_parser___ReduceAction209___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10651); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10653); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10655); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10657); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10659); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[15] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 10661); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[11] /*tkwredefnode5*/,  variable[12] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[13] /*tkwvarnode8*/,  variable[14] /*tattridnode9*/,  variable[15] /*ptypenode10*/,  NIT_NULL /*null*/) /*new AAttrPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label450: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction209___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10677, LOCATE_parser___ReduceAction209___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction209].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label451: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction209].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction210___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10681, LOCATE_parser___ReduceAction210___action};
-  val_t variable[24];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10694); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10696); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10702); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[16] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10708); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10710); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10712); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[21] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 10714); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  variable[17] /*pablenode6*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode12*/,  variable[20] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[21] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[22] = variable[23];
-  variable[3] =  variable[22] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[23]: Result */
-  variable[23] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[23],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label452: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction210___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10730, LOCATE_parser___ReduceAction210___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction210].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label453: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction210].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction211___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10734, LOCATE_parser___ReduceAction211___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10748); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10750); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10756); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10758); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[17] /*tkwredefnode7*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10764); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10766); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10768); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction211___action, LOCATE_parser, 10770); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label454: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction211___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10786, LOCATE_parser___ReduceAction211___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction211].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label455: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction211].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction212___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10790, LOCATE_parser___ReduceAction212___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10802); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10804); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[13] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10810); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10812); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10814); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 10816); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  variable[14] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label456: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction212___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10832, LOCATE_parser___ReduceAction212___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction212].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label457: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction212].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction213___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10836, LOCATE_parser___ReduceAction213___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10850); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10852); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10854); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10860); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10866); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10868); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10870); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 10872); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  NIT_NULL /*null*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label458: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction213___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10888, LOCATE_parser___ReduceAction213___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction213].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label459: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction213].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction214___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10892, LOCATE_parser___ReduceAction214___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10907); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10909); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10911); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10917); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10919); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10925); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10927); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10929); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 10931); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  NIT_NULL /*null*/,  variable[22] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[23] /*tkwvarnode12*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label460: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction214___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10947, LOCATE_parser___ReduceAction214___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction214].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label461: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction214].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction215___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 10951, LOCATE_parser___ReduceAction215___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10964); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10966); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10968); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[14] /*tkwredefnode4*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10974); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10976); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10978); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 10980); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label462: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction215___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 10996, LOCATE_parser___ReduceAction215___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction215].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label463: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction215].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction216___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11000, LOCATE_parser___ReduceAction216___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11012); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11014); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[13] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11020); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11022); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11024); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 11026); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[14] /*pablenode4*/,  NIT_NULL /*null*/,  variable[15] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode10*/,  variable[17] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[18] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label464: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction216___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11042, LOCATE_parser___ReduceAction216___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction216].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label465: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction216].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction217___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11046, LOCATE_parser___ReduceAction217___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11059); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11061); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11063); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[14] /*tkwredefnode5*/,  variable[15] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11069); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11071); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11073); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction217___action, LOCATE_parser, 11075); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  NIT_NULL /*null*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label466: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction217___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11091, LOCATE_parser___ReduceAction217___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction217].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label467: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction217].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction218___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11095, LOCATE_parser___ReduceAction218___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11106); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11108); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11110); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[14] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11112); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 11114); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[13] /*tkwvarnode8*/,  variable[14] /*tattridnode9*/,  NIT_NULL /*null*/,  variable[15] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label468: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction218___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11130, LOCATE_parser___ReduceAction218___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction218].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label469: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction218].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction219___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11134, LOCATE_parser___ReduceAction219___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11148); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11150); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11156); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11162); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11164); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11166); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11168); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 11170); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  variable[19] /*tkwredefnode9*/,  variable[20] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode12*/,  variable[22] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label470: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction219___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11186, LOCATE_parser___ReduceAction219___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction219].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label471: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction219].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction220___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11190, LOCATE_parser___ReduceAction220___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11205); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11207); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11213); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11215); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11221); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11223); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11225); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11227); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 11229); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[23] /*tkwvarnode12*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label472: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction220___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11245, LOCATE_parser___ReduceAction220___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction220].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label473: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction220].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction221___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11249, LOCATE_parser___ReduceAction221___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11262); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11264); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11270); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11272); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11274); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11276); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 11278); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label474: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction221___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11294, LOCATE_parser___ReduceAction221___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction221].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label475: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction221].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction222___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11298, LOCATE_parser___ReduceAction222___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11313); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11315); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11317); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11323); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11329); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[22] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11331); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11333); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11335); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 11337); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  variable[21] /*tkwredefnode9*/,  variable[22] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[23] /*tkwvarnode12*/,  variable[24] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label476: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction222___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11353, LOCATE_parser___ReduceAction222___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction222].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label477: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction222].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction223___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11357, LOCATE_parser___ReduceAction223___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11373); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11375); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11377); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11383); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11385); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[22] = variable[23];
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[23] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11391); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[24] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11393); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[25] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11395); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[26] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11397); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 11399); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  variable[23] /*tkwredefnode9*/,  variable[24] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[25] /*tkwvarnode12*/,  variable[26] /*tattridnode13*/,  NIT_NULL /*null*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label478: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction223___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11415, LOCATE_parser___ReduceAction223___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction223].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label479: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction223].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction224___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11419, LOCATE_parser___ReduceAction224___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11433); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11435); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11437); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11443); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11445); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11447); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11449); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 11451); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode10*/,  variable[21] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label480: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction224___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11467, LOCATE_parser___ReduceAction224___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction224].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label481: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction224].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction225___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11471, LOCATE_parser___ReduceAction225___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11484); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11486); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11492); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11494); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11496); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11498); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 11500); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  variable[16] /*tkwredefnode7*/,  variable[17] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[18] /*tkwvarnode10*/,  variable[19] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label482: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction225___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11516, LOCATE_parser___ReduceAction225___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction225].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label483: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction225].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction226___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11520, LOCATE_parser___ReduceAction226___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11534); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11536); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11538); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11544); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11546); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11548); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11550); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 11552); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  variable[18] /*tkwredefnode7*/,  variable[19] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode10*/,  variable[21] /*tattridnode11*/,  NIT_NULL /*null*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label484: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction226___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11568, LOCATE_parser___ReduceAction226___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction226].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label485: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction226].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction227___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11572, LOCATE_parser___ReduceAction227___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11584); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11586); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11588); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11590); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[16] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11592); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 11594); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*tkwredefnode5*/,  variable[14] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[15] /*tkwvarnode8*/,  variable[16] /*tattridnode9*/,  NIT_NULL /*null*/,  variable[17] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label486: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction227___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11610, LOCATE_parser___ReduceAction227___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction227].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label487: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction227].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction228___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11614, LOCATE_parser___ReduceAction228___action};
-  val_t variable[26];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11628); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11630); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11636); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[17] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[19] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11642); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11644); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[21] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11646); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[22] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11648); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[23] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 11650); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  /* Register variable[25]: Result */
-  variable[25] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  variable[18] /*pablenode6*/,  NIT_NULL /*null*/,  variable[19] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[20] /*tkwvarnode12*/,  variable[21] /*tattridnode13*/,  variable[22] /*ptypenode14*/,  variable[23] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[24] = variable[25];
-  variable[3] =  variable[24] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[25]: Result */
-  variable[25] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[25],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label488: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction228___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11666, LOCATE_parser___ReduceAction228___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction228].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label489: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction228].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction229___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11670, LOCATE_parser___ReduceAction229___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11685); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11687); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11693); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11695); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[18] /*tkwredefnode7*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11701); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11703); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11705); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11707); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 11709); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[22] /*tkwvarnode12*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label490: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction229___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11725, LOCATE_parser___ReduceAction229___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction229].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label491: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction229].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction230___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11729, LOCATE_parser___ReduceAction230___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11742); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11744); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[14] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11750); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11752); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11754); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11756); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 11758); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  variable[15] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[17] /*tkwvarnode10*/,  variable[18] /*tattridnode11*/,  variable[19] /*ptypenode12*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label492: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction230___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11774, LOCATE_parser___ReduceAction230___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction230].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label493: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction230].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction231___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11778, LOCATE_parser___ReduceAction231___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11793); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11795); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11797); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11803); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[19] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11809); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11811); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11813); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11815); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction231___action, LOCATE_parser, 11817); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[20] /*pablenode6*/,  NIT_NULL /*null*/,  variable[21] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[22] /*tkwvarnode12*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label494: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction231___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11833, LOCATE_parser___ReduceAction231___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction231].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label495: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction231].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction232___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11837, LOCATE_parser___ReduceAction232___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11853); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11855); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11857); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11863); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11865); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  /* Register variable[23]: Result */
-  variable[23] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[20] /*tkwredefnode7*/,  variable[21] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[22] = variable[23];
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11871); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11873); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11875); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11877); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction232___action, LOCATE_parser, 11879); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[22] /*pablenode6*/,  NIT_NULL /*null*/,  variable[23] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[24] /*tkwvarnode12*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label496: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction232___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11895, LOCATE_parser___ReduceAction232___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction232].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label497: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction232].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction233___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11899, LOCATE_parser___ReduceAction233___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11913); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11915); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11917); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[15] /*tkwredefnode4*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11923); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11925); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11927); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11929); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 11931); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[17] /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode10*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label498: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction233___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11947, LOCATE_parser___ReduceAction233___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction233].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label499: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction233].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction234___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 11951, LOCATE_parser___ReduceAction234___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11964); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11966); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[14] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11972); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11974); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[18] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11976); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[19] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11978); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 11980); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[15] /*pablenode4*/,  NIT_NULL /*null*/,  variable[16] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[17] /*tkwvarnode10*/,  variable[18] /*tattridnode11*/,  variable[19] /*ptypenode12*/,  variable[20] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label500: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction234___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 11996, LOCATE_parser___ReduceAction234___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction234].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label501: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction234].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction235___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12000, LOCATE_parser___ReduceAction235___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12014); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12016); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12018); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[15] /*tkwredefnode5*/,  variable[16] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12024); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12026); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12028); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12030); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 12032); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[17] /*pablenode4*/,  NIT_NULL /*null*/,  variable[18] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode10*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label502: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction235___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12048, LOCATE_parser___ReduceAction235___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction235].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label503: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction235].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction236___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12052, LOCATE_parser___ReduceAction236___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12064); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12066); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12068); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[15] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12070); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12072); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 12074); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[14] /*tkwvarnode8*/,  variable[15] /*tattridnode9*/,  variable[16] /*ptypenode10*/,  variable[17] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label504: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction236___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12090, LOCATE_parser___ReduceAction236___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction236].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label505: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction236].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction237___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12094, LOCATE_parser___ReduceAction237___action};
-  val_t variable[28];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12109); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12111); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[16] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12117); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[18] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12123); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[21] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12125); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12127); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[23] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12129); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[24] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12131); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[25] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 12133); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  /* Register variable[27]: Result */
-  variable[27] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[17] /*pablenode3*/,  variable[19] /*pablenode6*/,  variable[20] /*tkwredefnode9*/,  variable[21] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[22] /*tkwvarnode12*/,  variable[23] /*tattridnode13*/,  variable[24] /*ptypenode14*/,  variable[25] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[26] = variable[27];
-  variable[3] =  variable[26] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[27]: Result */
-  variable[27] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[27],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label506: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction237___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12149, LOCATE_parser___ReduceAction237___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction237].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label507: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction237].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction238___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12153, LOCATE_parser___ReduceAction238___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12169); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12171); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12177); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12179); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[19] /*tkwredefnode7*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12185); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12187); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12189); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12191); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12193); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 12195); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[18] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[24] /*tkwvarnode12*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label508: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction238___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12211, LOCATE_parser___ReduceAction238___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction238].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label509: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction238].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction239___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12215, LOCATE_parser___ReduceAction239___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12229); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12231); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable[15] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12237); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12239); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12241); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12243); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12245); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 12247); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  variable[16] /*pablenode3*/,  NIT_NULL /*null*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode10*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label510: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction239___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12263, LOCATE_parser___ReduceAction239___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction239].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label511: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction239].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction240___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12267, LOCATE_parser___ReduceAction240___action};
-  val_t variable[30];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12283); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[14] /*nodearraylist2*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12285); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[13] /*nodearraylist3*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12287); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[17] /*tkwredefnode4*/,  variable[18] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[20] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12293); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[20] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[21] = variable[22];
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[11] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12299); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[10] /*nodearraylist6*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[23] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12301); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[9] /*nodearraylist7*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12303); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[25] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12305); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[7] /*nodearraylist9*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[26] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12307); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[4] /*nodearraylist12*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[27] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 12309); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  /* Register variable[29]: Result */
-  variable[29] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[16] /*pdocnode2*/,  variable[19] /*pablenode3*/,  variable[21] /*pablenode6*/,  variable[22] /*tkwredefnode9*/,  variable[23] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[24] /*tkwvarnode12*/,  variable[25] /*tattridnode13*/,  variable[26] /*ptypenode14*/,  variable[27] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[28] = variable[29];
-  variable[3] =  variable[28] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[29]: Result */
-  variable[29] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[29],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label512: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction240___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12325, LOCATE_parser___ReduceAction240___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction240].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label513: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction240].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction241___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12329, LOCATE_parser___ReduceAction241___action};
-  val_t variable[32];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[16] /*nodearraylist1*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[17] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12346); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[15] /*nodearraylist2*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12348); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[14] /*nodearraylist3*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12350); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[18] /*tkwredefnode4*/,  variable[19] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[20] = variable[21];
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[13] /*nodearraylist4*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12356); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[12] /*nodearraylist5*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable[22] /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12358); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[21] /*tkwredefnode7*/,  variable[22] /*tkwwritablenode8*/) /*new AWriteAble*/;
-  variable[23] = variable[24];
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[11] /*nodearraylist6*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable[24] /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12364); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  variable[25] =  variable[10] /*nodearraylist7*/;
-  /* Register variable[26]: Result */
-  variable[26] = TAG_Bool(( variable[25] /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable[25] /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[26])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12366); nit_exit(1);}
-  /* Register variable[26]: Local variable */
-  variable[26] =  variable[9] /*nodearraylist8*/;
-  /* Register variable[27]: Result */
-  variable[27] = TAG_Bool(( variable[26] /*tkwvarnode12*/==NIT_NULL) || VAL_ISA( variable[26] /*tkwvarnode12*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[27])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12368); nit_exit(1);}
-  /* Register variable[27]: Local variable */
-  variable[27] =  variable[8] /*nodearraylist9*/;
-  /* Register variable[28]: Result */
-  variable[28] = TAG_Bool(( variable[27] /*tattridnode13*/==NIT_NULL) || VAL_ISA( variable[27] /*tattridnode13*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[28])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12370); nit_exit(1);}
-  /* Register variable[28]: Local variable */
-  variable[28] =  variable[7] /*nodearraylist10*/;
-  /* Register variable[29]: Result */
-  variable[29] = TAG_Bool(( variable[28] /*ptypenode14*/==NIT_NULL) || VAL_ISA( variable[28] /*ptypenode14*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[29])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12372); nit_exit(1);}
-  /* Register variable[29]: Local variable */
-  variable[29] =  variable[4] /*nodearraylist13*/;
-  /* Register variable[30]: Result */
-  variable[30] = TAG_Bool(( variable[29] /*pexprnode15*/==NIT_NULL) || VAL_ISA( variable[29] /*pexprnode15*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[30])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 12374); nit_exit(1);}
-  /* Register variable[30]: Local variable */
-  /* Register variable[31]: Result */
-  variable[31] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[17] /*pdocnode2*/,  variable[20] /*pablenode3*/,  variable[23] /*pablenode6*/,  variable[24] /*tkwredefnode9*/,  variable[25] /*pvisibilitynode10*/,  NIT_NULL /*null*/,  variable[26] /*tkwvarnode12*/,  variable[27] /*tattridnode13*/,  variable[28] /*ptypenode14*/,  variable[29] /*pexprnode15*/) /*new AAttrPropdef*/;
-  variable[30] = variable[31];
-  variable[3] =  variable[30] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[31]: Result */
-  variable[31] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[31],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label514: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction241___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12390, LOCATE_parser___ReduceAction241___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction241].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label515: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction241].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction242___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12394, LOCATE_parser___ReduceAction242___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12409); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12411); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12413); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AReadAble_parser_prod___AReadAble___init_areadable( variable[16] /*tkwredefnode4*/,  variable[17] /*tkwreadablenode5*/) /*new AReadAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12419); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12421); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12423); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12425); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12427); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 12429); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  variable[18] /*pablenode3*/,  NIT_NULL /*null*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode10*/,  variable[22] /*tattridnode11*/,  variable[23] /*ptypenode12*/,  variable[24] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label516: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction242___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12445, LOCATE_parser___ReduceAction242___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction242].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label517: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction242].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction243___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12449, LOCATE_parser___ReduceAction243___action};
-  val_t variable[25];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12463); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[12] /*nodearraylist2*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12465); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable[15] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12471); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12473); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[9] /*nodearraylist5*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12475); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[8] /*nodearraylist6*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[20] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12477); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[21] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12479); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[22] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 12481); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  /* Register variable[24]: Result */
-  variable[24] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[14] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[16] /*pablenode4*/,  variable[17] /*tkwredefnode7*/,  variable[18] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[19] /*tkwvarnode10*/,  variable[20] /*tattridnode11*/,  variable[21] /*ptypenode12*/,  variable[22] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[23] = variable[24];
-  variable[3] =  variable[23] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[24]: Result */
-  variable[24] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[24],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label518: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction243___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12497, LOCATE_parser___ReduceAction243___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction243].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label519: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction243].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction244___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12501, LOCATE_parser___ReduceAction244___action};
-  val_t variable[27];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12516); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[13] /*nodearraylist2*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12518); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12520); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable( variable[16] /*tkwredefnode5*/,  variable[17] /*tkwwritablenode6*/) /*new AWriteAble*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[11] /*nodearraylist4*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12526); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable[20] /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12528); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  variable[21] =  variable[9] /*nodearraylist6*/;
-  /* Register variable[22]: Result */
-  variable[22] = TAG_Bool(( variable[21] /*tkwvarnode10*/==NIT_NULL) || VAL_ISA( variable[21] /*tkwvarnode10*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12530); nit_exit(1);}
-  /* Register variable[22]: Local variable */
-  variable[22] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[23]: Result */
-  variable[23] = TAG_Bool(( variable[22] /*tattridnode11*/==NIT_NULL) || VAL_ISA( variable[22] /*tattridnode11*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12532); nit_exit(1);}
-  /* Register variable[23]: Local variable */
-  variable[23] =  variable[7] /*nodearraylist8*/;
-  /* Register variable[24]: Result */
-  variable[24] = TAG_Bool(( variable[23] /*ptypenode12*/==NIT_NULL) || VAL_ISA( variable[23] /*ptypenode12*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[24])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12534); nit_exit(1);}
-  /* Register variable[24]: Local variable */
-  variable[24] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[25]: Result */
-  variable[25] = TAG_Bool(( variable[24] /*pexprnode13*/==NIT_NULL) || VAL_ISA( variable[24] /*pexprnode13*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[25])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 12536); nit_exit(1);}
-  /* Register variable[25]: Local variable */
-  /* Register variable[26]: Result */
-  variable[26] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[15] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[18] /*pablenode4*/,  variable[19] /*tkwredefnode7*/,  variable[20] /*pvisibilitynode8*/,  NIT_NULL /*null*/,  variable[21] /*tkwvarnode10*/,  variable[22] /*tattridnode11*/,  variable[23] /*ptypenode12*/,  variable[24] /*pexprnode13*/) /*new AAttrPropdef*/;
-  variable[25] = variable[26];
-  variable[3] =  variable[25] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[26]: Result */
-  variable[26] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[26],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label520: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction244___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12552, LOCATE_parser___ReduceAction244___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction244].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label521: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction244].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction245___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12556, LOCATE_parser___ReduceAction245___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12569); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12571); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12573); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwvarnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwvarnode8*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12575); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tattridnode9*/==NIT_NULL) || VAL_ISA( variable[17] /*tattridnode9*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12577); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*ptypenode10*/==NIT_NULL) || VAL_ISA( variable[18] /*ptypenode10*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12579); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode11*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode11*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 12581); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef( variable[13] /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable[14] /*tkwredefnode5*/,  variable[15] /*pvisibilitynode6*/,  NIT_NULL /*null*/,  variable[16] /*tkwvarnode8*/,  variable[17] /*tattridnode9*/,  variable[18] /*ptypenode10*/,  variable[19] /*pexprnode11*/) /*new AAttrPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label522: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction245___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12597, LOCATE_parser___ReduceAction245___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction245].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label523: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction245].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction246___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12601, LOCATE_parser___ReduceAction246___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 12611); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[11] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 12613); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 12615); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[13] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 12617); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 12619); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[10] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[11] /*pvisibilitynode4*/,  variable[12] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[13] /*psignaturenode7*/,  variable[14] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label524: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction246___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12632, LOCATE_parser___ReduceAction246___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction246].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label525: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction246].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction247___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12636, LOCATE_parser___ReduceAction247___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12647); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12649); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12651); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12653); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12655); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 12657); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  variable[12] /*tkwredefnode3*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label526: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction247___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12670, LOCATE_parser___ReduceAction247___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction247].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label527: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction247].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction248___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12674, LOCATE_parser___ReduceAction248___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12685); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12687); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12689); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12691); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12693); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 12695); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label528: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction248___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12708, LOCATE_parser___ReduceAction248___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction248].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label529: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction248].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction249___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12712, LOCATE_parser___ReduceAction249___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12724); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12726); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12728); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12730); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12732); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12734); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 12736); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label530: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction249___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12749, LOCATE_parser___ReduceAction249___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction249].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label531: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction249].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction250___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12753, LOCATE_parser___ReduceAction250___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 12764); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 12766); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 12768); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[14] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 12770); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 12772); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[14] /*psignaturenode7*/,  variable[15] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label532: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction250___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12785, LOCATE_parser___ReduceAction250___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction250].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label533: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction250].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction251___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12789, LOCATE_parser___ReduceAction251___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12801); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12803); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12805); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12807); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12809); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 12811); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label534: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction251___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12824, LOCATE_parser___ReduceAction251___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction251].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label535: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction251].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction252___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12828, LOCATE_parser___ReduceAction252___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12840); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12842); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12844); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12846); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12848); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 12850); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwinitnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label536: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction252___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12863, LOCATE_parser___ReduceAction252___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction252].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label537: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction252].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction253___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12867, LOCATE_parser___ReduceAction253___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12880); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12882); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12884); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12886); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12888); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12890); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 12892); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwinitnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/) /*new AConcreteInitPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label538: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction253___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12905, LOCATE_parser___ReduceAction253___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction253].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label539: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction253].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction254___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12909, LOCATE_parser___ReduceAction254___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 12918); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[10] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 12920); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwtypenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwtypenode5*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 12922); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 12924); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode7*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode7*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 12926); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef( variable[9] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[10] /*pvisibilitynode4*/,  variable[11] /*tkwtypenode5*/,  variable[12] /*tclassidnode6*/,  variable[13] /*ptypenode7*/) /*new ATypePropdef*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label540: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction254___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12938, LOCATE_parser___ReduceAction254___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction254].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label541: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction254].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction255___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12942, LOCATE_parser___ReduceAction255___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12952); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12954); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12956); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwtypenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwtypenode5*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12958); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12960); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*ptypenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*ptypenode7*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 12962); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef( variable[10] /*pdocnode2*/,  variable[11] /*tkwredefnode3*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwtypenode5*/,  variable[14] /*tclassidnode6*/,  variable[15] /*ptypenode7*/) /*new ATypePropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(12)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label542: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction255___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12974, LOCATE_parser___ReduceAction255___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction255].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label543: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction255].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction256___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12978, LOCATE_parser___ReduceAction256___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility() /*new APublicVisibility*/;
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*pvisibilitynode1*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label544: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction256___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 12986, LOCATE_parser___ReduceAction256___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction256].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label545: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction256].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction257___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 12990, LOCATE_parser___ReduceAction257___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwprivatenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwprivatenode2*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 12996); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility( variable[6] /*tkwprivatenode2*/) /*new APrivateVisibility*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label546: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction257___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13003, LOCATE_parser___ReduceAction257___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction257].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label547: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction257].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction258___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13007, LOCATE_parser___ReduceAction258___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwprotectednode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwprotectednode2*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 13013); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility( variable[6] /*tkwprotectednode2*/) /*new AProtectedVisibility*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label548: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction258___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13020, LOCATE_parser___ReduceAction258___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction258].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label549: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction258].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction259___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13024, LOCATE_parser___ReduceAction259___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwintrudenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwintrudenode2*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 13030); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility( variable[6] /*tkwintrudenode2*/) /*new AIntrudeVisibility*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pvisibilitynode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label550: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction259___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13037, LOCATE_parser___ReduceAction259___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction259].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label551: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction259].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction260___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13041, LOCATE_parser___ReduceAction260___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 13046); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid( variable[5] /*tidnode2*/) /*new AIdMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label552: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction260___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13053, LOCATE_parser___ReduceAction260___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction260].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label553: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction260].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction261___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13057, LOCATE_parser___ReduceAction261___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tplusnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tplusnode2*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 13062); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid( variable[5] /*tplusnode2*/) /*new APlusMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label554: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction261___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13069, LOCATE_parser___ReduceAction261___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction261].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label555: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction261].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction262___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13073, LOCATE_parser___ReduceAction262___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction262___action, LOCATE_parser, 13078); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid( variable[5] /*tminusnode2*/) /*new AMinusMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label556: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction262___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13085, LOCATE_parser___ReduceAction262___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction262].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label557: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction262].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction263___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13089, LOCATE_parser___ReduceAction263___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstarnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstarnode2*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 13094); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid( variable[5] /*tstarnode2*/) /*new AStarMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label558: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction263___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13101, LOCATE_parser___ReduceAction263___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction263].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label559: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction263].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction264___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13105, LOCATE_parser___ReduceAction264___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tslashnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tslashnode2*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 13110); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid( variable[5] /*tslashnode2*/) /*new ASlashMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label560: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction264___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13117, LOCATE_parser___ReduceAction264___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction264].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label561: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction264].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction265___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13121, LOCATE_parser___ReduceAction265___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tpercentnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tpercentnode2*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 13126); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid( variable[5] /*tpercentnode2*/) /*new APercentMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label562: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction265___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13133, LOCATE_parser___ReduceAction265___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction265].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label563: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction265].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction266___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13137, LOCATE_parser___ReduceAction266___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*teqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*teqnode2*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction266___action, LOCATE_parser, 13142); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid( variable[5] /*teqnode2*/) /*new AEqMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label564: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction266___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13149, LOCATE_parser___ReduceAction266___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction266].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label565: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction266].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction267___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13153, LOCATE_parser___ReduceAction267___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tnenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnenode2*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction267___action, LOCATE_parser, 13158); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid( variable[5] /*tnenode2*/) /*new ANeMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label566: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction267___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13165, LOCATE_parser___ReduceAction267___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction267].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label567: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction267].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction268___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13169, LOCATE_parser___ReduceAction268___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tlenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tlenode2*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction268___action, LOCATE_parser, 13174); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid( variable[5] /*tlenode2*/) /*new ALeMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label568: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction268___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13181, LOCATE_parser___ReduceAction268___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction268].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label569: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction268].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction269___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13185, LOCATE_parser___ReduceAction269___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tgenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tgenode2*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 13190); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid( variable[5] /*tgenode2*/) /*new AGeMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label570: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction269___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13197, LOCATE_parser___ReduceAction269___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction269].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label571: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction269].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction270___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13201, LOCATE_parser___ReduceAction270___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tltnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tltnode2*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction270___action, LOCATE_parser, 13206); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid( variable[5] /*tltnode2*/) /*new ALtMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label572: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction270___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13213, LOCATE_parser___ReduceAction270___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction270].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label573: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction270].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction271___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13217, LOCATE_parser___ReduceAction271___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tgtnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tgtnode2*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction271___action, LOCATE_parser, 13222); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid( variable[5] /*tgtnode2*/) /*new AGtMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label574: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction271___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13229, LOCATE_parser___ReduceAction271___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction271].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label575: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction271].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction272___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13233, LOCATE_parser___ReduceAction272___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tobranode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 13239); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tcbranode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tcbranode3*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 13241); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid( variable[6] /*tobranode2*/,  variable[7] /*tcbranode3*/) /*new ABraMethid*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label576: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction272___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13249, LOCATE_parser___ReduceAction272___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction272].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label577: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction272].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction273___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13253, LOCATE_parser___ReduceAction273___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstarshipnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstarshipnode2*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 13258); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid( variable[5] /*tstarshipnode2*/) /*new AStarshipMethid*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label578: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction273___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13265, LOCATE_parser___ReduceAction273___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction273].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label579: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction273].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction274___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13269, LOCATE_parser___ReduceAction274___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 13275); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tassignnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tassignnode3*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 13277); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid( variable[6] /*tidnode2*/,  variable[7] /*tassignnode3*/) /*new AAssignMethid*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label580: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction274___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13285, LOCATE_parser___ReduceAction274___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction274].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label581: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction274].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction275___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13289, LOCATE_parser___ReduceAction275___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tobranode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 13296); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tcbranode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tcbranode3*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 13298); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 13300); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid( variable[7] /*tobranode2*/,  variable[8] /*tcbranode3*/,  variable[9] /*tassignnode4*/) /*new ABraassignMethid*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pmethidnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(14)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label582: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction275___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13309, LOCATE_parser___ReduceAction275___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction275].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label583: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction275].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction276___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13313, LOCATE_parser___ReduceAction276___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction276___action, LOCATE_parser, 13320); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[7] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode5*/) /*new ASignature*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label584: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction276___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13336, LOCATE_parser___ReduceAction276___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction276].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label585: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction276].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction277___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13340, LOCATE_parser___ReduceAction277___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 13348); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 13357); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode6*/)( variable[7] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode6*/)( variable[7] /*listnode6*/,  variable[9] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode6*/) /*new ASignature*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label586: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction277___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13373, LOCATE_parser___ReduceAction277___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction277].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label587: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction277].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction278___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13377, LOCATE_parser___ReduceAction278___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[8] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 13385); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 13387); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode5*/) /*new ASignature*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label588: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction278___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13403, LOCATE_parser___ReduceAction278___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction278].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label589: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction278].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction279___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13407, LOCATE_parser___ReduceAction279___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 13416); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode3*/)( variable[7] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 13425); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 13427); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode6*/) /*new ASignature*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label590: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction279___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13443, LOCATE_parser___ReduceAction279___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction279].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label591: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction279].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction280___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13447, LOCATE_parser___ReduceAction280___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  NIT_NULL /*null*/,  variable[6] /*listnode4*/) /*new ASignature*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label592: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction280___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13461, LOCATE_parser___ReduceAction280___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction280].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label593: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction280].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction281___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13465, LOCATE_parser___ReduceAction281___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction281___action, LOCATE_parser, 13473); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  NIT_NULL /*null*/,  variable[7] /*listnode5*/) /*new ASignature*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label594: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction281___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13489, LOCATE_parser___ReduceAction281___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction281].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label595: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction281].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction282___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13493, LOCATE_parser___ReduceAction282___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[8] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction282___action, LOCATE_parser, 13501); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode2*/,  variable[8] /*ptypenode3*/,  variable[7] /*listnode4*/) /*new ASignature*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label596: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction282___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13510, LOCATE_parser___ReduceAction282___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction282].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label597: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction282].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction283___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13514, LOCATE_parser___ReduceAction283___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction283___action, LOCATE_parser, 13523); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode3*/)( variable[7] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[7] =  variable[9] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode3*/)( variable[7] /*listnode3*/,  variable[9] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction283___action, LOCATE_parser, 13532); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[7] /*listnode3*/,  variable[10] /*ptypenode4*/,  variable[8] /*listnode5*/) /*new ASignature*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(15)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label598: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction283___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13541, LOCATE_parser___ReduceAction283___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction283].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label599: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction283].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction284___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13545, LOCATE_parser___ReduceAction284___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[4] /*listnode2*/,  NIT_NULL /*null*/,  variable[5] /*listnode4*/) /*new ASignature*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label600: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction284___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13558, LOCATE_parser___ReduceAction284___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction284].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label601: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction284].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction285___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13562, LOCATE_parser___ReduceAction285___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction285___action, LOCATE_parser, 13569); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[5] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode3*/,  NIT_NULL /*null*/,  variable[6] /*listnode5*/) /*new ASignature*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label602: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction285___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13585, LOCATE_parser___ReduceAction285___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction285].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label603: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction285].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction286___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13589, LOCATE_parser___ReduceAction286___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction286___action, LOCATE_parser, 13596); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[5] /*listnode2*/,  variable[7] /*ptypenode3*/,  variable[6] /*listnode4*/) /*new ASignature*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label604: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction286___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13605, LOCATE_parser___ReduceAction286___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction286].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label605: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction286].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction287___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13609, LOCATE_parser___ReduceAction287___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 13617); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 13626); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASignature_parser_prod___ASignature___init_asignature( variable[6] /*listnode3*/,  variable[9] /*ptypenode4*/,  variable[7] /*listnode5*/) /*new ASignature*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*psignaturenode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(16)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label606: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction287___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13635, LOCATE_parser___ReduceAction287___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction287].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label607: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction287].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction288___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13639, LOCATE_parser___ReduceAction288___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction288___action, LOCATE_parser, 13649); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pparamnode1*/)( variable[10] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label608: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction288___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13656, LOCATE_parser___ReduceAction288___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction288].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label609: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction288].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction289___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13660, LOCATE_parser___ReduceAction289___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[11] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 13671); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 13673); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pparamnode1*/)( variable[11] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label610: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction289___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13687, LOCATE_parser___ReduceAction289___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction289].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label611: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction289].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction290___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13691, LOCATE_parser___ReduceAction290___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(17)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label612: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction290___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13701, LOCATE_parser___ReduceAction290___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction290].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label613: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction290].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction291___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13705, LOCATE_parser___ReduceAction291___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction291___action, LOCATE_parser, 13712); nit_exit(1);}
-  variable[3] =  variable[7] /*pparamnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label614: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction291___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13716, LOCATE_parser___ReduceAction291___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction291].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label615: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction291].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction292___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13720, LOCATE_parser___ReduceAction292___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction292___action, LOCATE_parser, 13725); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AParam_parser_prod___AParam___init_aparam( variable[5] /*tidnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AParam*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pparamnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label616: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction292___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13734, LOCATE_parser___ReduceAction292___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction292].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label617: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction292].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction293___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13738, LOCATE_parser___ReduceAction293___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction293___action, LOCATE_parser, 13744); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction293___action, LOCATE_parser, 13746); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AParam_parser_prod___AParam___init_aparam( variable[6] /*tidnode2*/,  variable[7] /*ptypenode3*/,  NIT_NULL /*null*/) /*new AParam*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pparamnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label618: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction293___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13755, LOCATE_parser___ReduceAction293___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction293].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label619: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction293].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction294___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13759, LOCATE_parser___ReduceAction294___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction294___action, LOCATE_parser, 13766); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[8] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction294___action, LOCATE_parser, 13768); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tdotdotdotnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tdotdotdotnode4*/, COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction294___action, LOCATE_parser, 13770); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AParam_parser_prod___AParam___init_aparam( variable[7] /*tidnode2*/,  variable[8] /*ptypenode3*/,  variable[9] /*tdotdotdotnode4*/) /*new AParam*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pparamnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label620: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction294___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13779, LOCATE_parser___ReduceAction294___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction294].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label621: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction294].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction295___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13783, LOCATE_parser___ReduceAction295___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction295___action, LOCATE_parser, 13790); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode2*/)( variable[6] /*listnode2*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode2=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode2*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(20)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label622: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction295___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13801, LOCATE_parser___ReduceAction295___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction295].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label623: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction295].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction296___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13805, LOCATE_parser___ReduceAction296___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction296___action, LOCATE_parser, 13814); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction296___action, LOCATE_parser, 13816); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*psignaturenode5*/==NIT_NULL) || VAL_ISA( variable[11] /*psignaturenode5*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction296___action, LOCATE_parser, 13818); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[9] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[10] /*tidnode4*/,  variable[11] /*psignaturenode5*/,  NIT_NULL /*null*/) /*new AClosureDecl*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pclosuredeclnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label624: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction296___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13829, LOCATE_parser___ReduceAction296___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction296].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label625: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction296].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction297___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13833, LOCATE_parser___ReduceAction297___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 13843); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwbreaknode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwbreaknode3*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 13845); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 13847); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*psignaturenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*psignaturenode5*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 13849); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[10] /*tkwwithnode2*/,  variable[11] /*tkwbreaknode3*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  NIT_NULL /*null*/) /*new AClosureDecl*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pclosuredeclnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label626: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction297___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13860, LOCATE_parser___ReduceAction297___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction297].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label627: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction297].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction298___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13864, LOCATE_parser___ReduceAction298___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 13875); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 13877); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*psignaturenode5*/==NIT_NULL) || VAL_ISA( variable[13] /*psignaturenode5*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 13879); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 13881); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[11] /*tkwwithnode2*/,  NIT_NULL /*null*/,  variable[12] /*tidnode4*/,  variable[13] /*psignaturenode5*/,  variable[14] /*pexprnode6*/) /*new AClosureDecl*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pclosuredeclnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label628: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction298___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13892, LOCATE_parser___ReduceAction298___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction298].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label629: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction298].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction299___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13896, LOCATE_parser___ReduceAction299___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 13908); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwbreaknode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwbreaknode3*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 13910); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 13912); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode5*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode5*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 13914); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 13916); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl( variable[12] /*tkwwithnode2*/,  variable[13] /*tkwbreaknode3*/,  variable[14] /*tidnode4*/,  variable[15] /*psignaturenode5*/,  variable[16] /*pexprnode6*/) /*new AClosureDecl*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pclosuredeclnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(21)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label630: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction299___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13927, LOCATE_parser___ReduceAction299___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction299].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label631: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction299].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction300___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13931, LOCATE_parser___ReduceAction300___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction300___action, LOCATE_parser, 13937); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( NIT_NULL /*null*/,  variable[6] /*tclassidnode3*/,  variable[5] /*listnode4*/) /*new AType*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label632: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction300___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13946, LOCATE_parser___ReduceAction300___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction300].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label633: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction300].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction301___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13950, LOCATE_parser___ReduceAction301___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnullablenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnullablenode2*/, COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction301___action, LOCATE_parser, 13957); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction301___action, LOCATE_parser, 13959); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AType_parser_prod___AType___init_atype( variable[7] /*tkwnullablenode2*/,  variable[8] /*tclassidnode3*/,  variable[6] /*listnode4*/) /*new AType*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label634: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction301___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 13968, LOCATE_parser___ReduceAction301___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction301].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label635: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction301].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction302___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 13972, LOCATE_parser___ReduceAction302___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction302___action, LOCATE_parser, 13983); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction302___action, LOCATE_parser, 13985); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AType_parser_prod___AType___init_atype( NIT_NULL /*null*/,  variable[11] /*tclassidnode3*/,  variable[10] /*listnode5*/) /*new AType*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label636: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction302___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14001, LOCATE_parser___ReduceAction302___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction302].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label637: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction302].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction303___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14005, LOCATE_parser___ReduceAction303___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwnullablenode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwnullablenode2*/, COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction303___action, LOCATE_parser, 14017); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction303___action, LOCATE_parser, 14019); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction303___action, LOCATE_parser, 14021); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AType_parser_prod___AType___init_atype( variable[12] /*tkwnullablenode2*/,  variable[13] /*tclassidnode3*/,  variable[11] /*listnode5*/) /*new AType*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label638: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction303___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14037, LOCATE_parser___ReduceAction303___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction303].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label639: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction303].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction304___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14041, LOCATE_parser___ReduceAction304___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction304___action, LOCATE_parser, 14047); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label640: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction304___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14054, LOCATE_parser___ReduceAction304___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction304].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label641: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction304].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction305___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14058, LOCATE_parser___ReduceAction305___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction305___action, LOCATE_parser, 14065); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction305___action, LOCATE_parser, 14067); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*ptypenode1*/)( variable[7] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label642: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction305___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14081, LOCATE_parser___ReduceAction305___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction305].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label643: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction305].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction306___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14085, LOCATE_parser___ReduceAction306___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction306___action, LOCATE_parser, 14092); nit_exit(1);}
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label644: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction306___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14096, LOCATE_parser___ReduceAction306___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction306].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label645: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction306].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction307___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14100, LOCATE_parser___ReduceAction307___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[7] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction307___action, LOCATE_parser, 14107); nit_exit(1);}
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label646: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction307___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14111, LOCATE_parser___ReduceAction307___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction307].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label647: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction307].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction308___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14115, LOCATE_parser___ReduceAction308___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction308___action, LOCATE_parser, 14120); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label648: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction308___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14124, LOCATE_parser___ReduceAction308___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction308].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label649: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction308].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction309___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14128, LOCATE_parser___ReduceAction309___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction309___action, LOCATE_parser, 14137); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode3*/) /*new ABlockExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label650: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction309___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14147, LOCATE_parser___ReduceAction309___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction309].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label651: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction309].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction310___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14151, LOCATE_parser___ReduceAction310___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction310___action, LOCATE_parser, 14161); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction310___action, LOCATE_parser, 14163); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[9] /*listnode4*/) /*new ABlockExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label652: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction310___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14180, LOCATE_parser___ReduceAction310___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction310].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label653: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction310].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction311___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14184, LOCATE_parser___ReduceAction311___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/) /*new ABlockExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label654: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction311___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14196, LOCATE_parser___ReduceAction311___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction311].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label655: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction311].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction312___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14200, LOCATE_parser___ReduceAction312___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/) /*new ABlockExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label656: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction312___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14211, LOCATE_parser___ReduceAction312___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction312].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label657: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction312].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction313___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14215, LOCATE_parser___ReduceAction313___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 14221); nit_exit(1);}
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label658: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction313___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14225, LOCATE_parser___ReduceAction313___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction313].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label659: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction313].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction314___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14229, LOCATE_parser___ReduceAction314___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction314___action, LOCATE_parser, 14234); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label660: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction314___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14238, LOCATE_parser___ReduceAction314___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction314].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label661: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction314].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction315___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14242, LOCATE_parser___ReduceAction315___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction315___action, LOCATE_parser, 14247); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label662: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction315___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14251, LOCATE_parser___ReduceAction315___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction315].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label663: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction315].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction316___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14255, LOCATE_parser___ReduceAction316___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 14260); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[5] /*tkwreturnnode2*/,  NIT_NULL /*null*/) /*new AReturnExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label664: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction316___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14268, LOCATE_parser___ReduceAction316___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction316].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label665: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction316].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction317___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14272, LOCATE_parser___ReduceAction317___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 14278); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 14280); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[6] /*tkwreturnnode2*/,  variable[7] /*pexprnode3*/) /*new AReturnExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label666: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction317___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14288, LOCATE_parser___ReduceAction317___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction317].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label667: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction317].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction318___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14292, LOCATE_parser___ReduceAction318___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 14297); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[5] /*tkwbreaknode2*/,  NIT_NULL /*null*/) /*new ABreakExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label668: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction318___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14305, LOCATE_parser___ReduceAction318___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction318].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label669: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction318].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction319___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14309, LOCATE_parser___ReduceAction319___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 14315); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 14317); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[6] /*tkwbreaknode2*/,  variable[7] /*pexprnode3*/) /*new ABreakExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label670: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction319___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14325, LOCATE_parser___ReduceAction319___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction319].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label671: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction319].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction320___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14329, LOCATE_parser___ReduceAction320___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction320___action, LOCATE_parser, 14334); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr( variable[5] /*tkwabortnode2*/) /*new AAbortExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label672: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction320___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14341, LOCATE_parser___ReduceAction320___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction320].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label673: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction320].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction321___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14345, LOCATE_parser___ReduceAction321___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 14350); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[5] /*tkwcontinuenode2*/,  NIT_NULL /*null*/) /*new AContinueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label674: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction321___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14358, LOCATE_parser___ReduceAction321___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction321].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label675: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction321].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction322___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14362, LOCATE_parser___ReduceAction322___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction322___action, LOCATE_parser, 14368); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction322___action, LOCATE_parser, 14370); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[6] /*tkwcontinuenode2*/,  variable[7] /*pexprnode3*/) /*new AContinueExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label676: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction322___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14378, LOCATE_parser___ReduceAction322___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction322].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label677: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction322].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction323___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14382, LOCATE_parser___ReduceAction323___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction323___action, LOCATE_parser, 14387); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label678: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction323___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14391, LOCATE_parser___ReduceAction323___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction323].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label679: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction323].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction324___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14395, LOCATE_parser___ReduceAction324___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction324___action, LOCATE_parser, 14400); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label680: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction324___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14404, LOCATE_parser___ReduceAction324___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction324].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label681: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction324].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction325___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14408, LOCATE_parser___ReduceAction325___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction325___action, LOCATE_parser, 14413); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label682: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction325___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14417, LOCATE_parser___ReduceAction325___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction325].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label683: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction325].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction326___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14421, LOCATE_parser___ReduceAction326___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction326___action, LOCATE_parser, 14426); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label684: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction326___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14430, LOCATE_parser___ReduceAction326___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction326].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label685: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction326].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction327___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14434, LOCATE_parser___ReduceAction327___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction327___action, LOCATE_parser, 14439); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label686: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction327___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14443, LOCATE_parser___ReduceAction327___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction327].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label687: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction327].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction328___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14447, LOCATE_parser___ReduceAction328___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction328___action, LOCATE_parser, 14458); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction328___action, LOCATE_parser, 14460); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction328___action, LOCATE_parser, 14462); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/) /*new ACallExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label688: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction328___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14479, LOCATE_parser___ReduceAction328___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction328].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label689: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction328].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction329___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14483, LOCATE_parser___ReduceAction329___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction329___action, LOCATE_parser, 14493); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction329___action, LOCATE_parser, 14495); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/) /*new ACallExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label690: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction329___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14512, LOCATE_parser___ReduceAction329___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction329].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label691: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction329].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction330___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14516, LOCATE_parser___ReduceAction330___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction330___action, LOCATE_parser, 14528); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction330___action, LOCATE_parser, 14530); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction330___action, LOCATE_parser, 14532); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction330___action, LOCATE_parser, 14541); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label692: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction330___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14558, LOCATE_parser___ReduceAction330___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction330].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label693: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction330].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction331___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14562, LOCATE_parser___ReduceAction331___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction331___action, LOCATE_parser, 14573); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction331___action, LOCATE_parser, 14575); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction331___action, LOCATE_parser, 14584); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label694: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction331___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14601, LOCATE_parser___ReduceAction331___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction331].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label695: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction331].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction332___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14605, LOCATE_parser___ReduceAction332___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction332___action, LOCATE_parser, 14612); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction332___action, LOCATE_parser, 14614); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label696: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction332___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14630, LOCATE_parser___ReduceAction332___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction332].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label697: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction332].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction333___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14634, LOCATE_parser___ReduceAction333___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction333___action, LOCATE_parser, 14642); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction333___action, LOCATE_parser, 14644); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction333___action, LOCATE_parser, 14646); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label698: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction333___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14662, LOCATE_parser___ReduceAction333___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction333].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label699: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction333].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction334___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14666, LOCATE_parser___ReduceAction334___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction334___action, LOCATE_parser, 14676); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction334___action, LOCATE_parser, 14678); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction334___action, LOCATE_parser, 14680); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/) /*new AInitExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label700: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction334___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14696, LOCATE_parser___ReduceAction334___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction334].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label701: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction334].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction335___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14700, LOCATE_parser___ReduceAction335___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction335___action, LOCATE_parser, 14709); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction335___action, LOCATE_parser, 14711); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/) /*new AInitExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(28)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label702: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction335___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14727, LOCATE_parser___ReduceAction335___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction335].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label703: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction335].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction336___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14731, LOCATE_parser___ReduceAction336___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction336___action, LOCATE_parser, 14737); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label704: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction336___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14744, LOCATE_parser___ReduceAction336___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction336].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label705: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction336].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction337___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14748, LOCATE_parser___ReduceAction337___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction337___action, LOCATE_parser, 14755); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction337___action, LOCATE_parser, 14757); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(29)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label706: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction337___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14771, LOCATE_parser___ReduceAction337___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction337].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label707: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction337].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction338___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14775, LOCATE_parser___ReduceAction338___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 14783); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 14785); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 14787); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  variable[10] /*pexprnode5*/) /*new AClosureDef*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label708: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction338___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14797, LOCATE_parser___ReduceAction338___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction338].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label709: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction338].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction339___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14801, LOCATE_parser___ReduceAction339___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction339___action, LOCATE_parser, 14810); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction339___action, LOCATE_parser, 14812); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction339___action, LOCATE_parser, 14821); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction339___action, LOCATE_parser, 14823); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  variable[12] /*pexprnode6*/) /*new AClosureDef*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(30)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label710: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction339___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14833, LOCATE_parser___ReduceAction339___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction339].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label711: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction339].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction340___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14837, LOCATE_parser___ReduceAction340___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 14847); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 14849); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 14852); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[13] /*pexprnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*pexprnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*pexprnode6*/)( variable[13] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[12] /*listnode7*/)( variable[12] /*listnode7*/,  variable[13] /*pexprnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[12] /*listnode7*/) /*new ABlockExpr*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[10] /*tkwwithnode2*/,  variable[9] /*listnode3*/,  variable[11] /*tkwdonode4*/,  variable[14] /*pexprnode5*/) /*new AClosureDef*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label712: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction340___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14868, LOCATE_parser___ReduceAction340___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction340].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label713: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction340].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction341___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14872, LOCATE_parser___ReduceAction341___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 14883); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 14885); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 14888); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 14890); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*pexprnode6*/ ==  NIT_NULL /*null*/) || (( variable[14] /*pexprnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*pexprnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*pexprnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*pexprnode6*/)( variable[14] /*pexprnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[14] /*pexprnode6*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode7*/)( variable[15] /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[13] /*listnode8*/)( variable[13] /*listnode8*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[13] =  variable[15] /*listnode7*/ /*listnode8=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[13] /*listnode8*/)( variable[13] /*listnode8*/,  variable[15] /*listnode7*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[13] /*listnode8*/) /*new ABlockExpr*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[11] /*tkwwithnode2*/,  variable[10] /*listnode3*/,  variable[12] /*tkwdonode4*/,  variable[16] /*pexprnode5*/) /*new AClosureDef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label714: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction341___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14913, LOCATE_parser___ReduceAction341___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction341].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label715: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction341].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction342___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14917, LOCATE_parser___ReduceAction342___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 14928); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 14930); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode3*/)( variable[12] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode4*/)( variable[10] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  variable[12] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 14939); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 14942); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[15] /*pexprnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*pexprnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*pexprnode7*/)( variable[15] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[14] /*listnode8*/)( variable[14] /*listnode8*/,  variable[15] /*pexprnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[14] /*listnode8*/) /*new ABlockExpr*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[11] /*tkwwithnode2*/,  variable[10] /*listnode4*/,  variable[13] /*tkwdonode5*/,  variable[16] /*pexprnode6*/) /*new AClosureDef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label716: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction342___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 14958, LOCATE_parser___ReduceAction342___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction342].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label717: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction342].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction343___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 14962, LOCATE_parser___ReduceAction343___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 14974); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 14976); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode3*/)( variable[13] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode4*/)( variable[11] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[11] =  variable[13] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  variable[13] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 14985); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 14988); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*listnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 14990); nit_exit(1);}
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode7*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode7*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pexprnode7*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pexprnode7*/)( variable[16] /*pexprnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[16] /*pexprnode7*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable[17] /*listnode8*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*listnode8*/)( variable[17] /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[18])) { /*if*/
-    /* Register variable[18]: Result */
-    variable[18] = CALL_abstract_collection___Collection___is_empty( variable[15] /*listnode9*/)( variable[15] /*listnode9*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[18])) { /*if*/
-      variable[15] =  variable[17] /*listnode8*/ /*listnode9=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[15] /*listnode9*/)( variable[15] /*listnode9*/,  variable[17] /*listnode8*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode9*/) /*new ABlockExpr*/;
-  variable[18] = variable[19];
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[12] /*tkwwithnode2*/,  variable[11] /*listnode4*/,  variable[14] /*tkwdonode5*/,  variable[18] /*pexprnode6*/) /*new AClosureDef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label718: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction343___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15013, LOCATE_parser___ReduceAction343___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction343].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label719: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction343].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction344___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15017, LOCATE_parser___ReduceAction344___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction344___action, LOCATE_parser, 15025); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction344___action, LOCATE_parser, 15027); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  NIT_NULL /*null*/) /*new AClosureDef*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label720: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction344___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15037, LOCATE_parser___ReduceAction344___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction344].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label721: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction344].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction345___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15041, LOCATE_parser___ReduceAction345___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction345___action, LOCATE_parser, 15050); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction345___action, LOCATE_parser, 15052); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction345___action, LOCATE_parser, 15061); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  NIT_NULL /*null*/) /*new AClosureDef*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(31)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label722: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction345___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15071, LOCATE_parser___ReduceAction345___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction345].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label723: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction345].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction346___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15075, LOCATE_parser___ReduceAction346___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction346___action, LOCATE_parser, 15081); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction346___action, LOCATE_parser, 15083); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[6] /*tkwvarnode2*/,  variable[7] /*tidnode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AVardeclExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label724: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction346___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15094, LOCATE_parser___ReduceAction346___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction346].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label725: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction346].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction347___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15098, LOCATE_parser___ReduceAction347___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 15105); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 15107); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 15109); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[7] /*tkwvarnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*ptypenode4*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AVardeclExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label726: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction347___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15120, LOCATE_parser___ReduceAction347___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction347].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label727: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction347].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction348___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15124, LOCATE_parser___ReduceAction348___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 15133); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 15135); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 15137); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 15139); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[9] /*tkwvarnode2*/,  variable[10] /*tidnode3*/,  NIT_NULL /*null*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/) /*new AVardeclExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label728: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction348___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15150, LOCATE_parser___ReduceAction348___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction348].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label729: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction348].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction349___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15154, LOCATE_parser___ReduceAction349___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 15164); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 15166); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[12] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 15168); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 15170); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 15172); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[10] /*tkwvarnode2*/,  variable[11] /*tidnode3*/,  variable[12] /*ptypenode4*/,  variable[13] /*tassignnode5*/,  variable[14] /*pexprnode6*/) /*new AVardeclExpr*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(32)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label730: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction349___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15183, LOCATE_parser___ReduceAction349___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction349].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label731: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction349].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction350___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15187, LOCATE_parser___ReduceAction350___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 15197); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 15199); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 15201); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction350___action, LOCATE_parser, 15203); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*tassignnode4*/,  variable[13] /*pexprnode5*/) /*new AAttrAssignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label732: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction350___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15213, LOCATE_parser___ReduceAction350___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction350].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label733: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction350].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction351___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15217, LOCATE_parser___ReduceAction351___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction351___action, LOCATE_parser, 15226); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction351___action, LOCATE_parser, 15228); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction351___action, LOCATE_parser, 15230); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*tassignnode4*/,  variable[10] /*pexprnode5*/) /*new AAttrAssignExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label734: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction351___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15240, LOCATE_parser___ReduceAction351___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction351].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label735: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction351].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction352___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15244, LOCATE_parser___ReduceAction352___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 15256); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 15258); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 15260); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 15269); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 15271); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*tassignnode6*/,  variable[16] /*pexprnode7*/) /*new ACallAssignExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label736: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction352___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15282, LOCATE_parser___ReduceAction352___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction352].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label737: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction352].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction353___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15286, LOCATE_parser___ReduceAction353___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 15297); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 15299); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 15308); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 15310); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*tassignnode6*/,  variable[13] /*pexprnode7*/) /*new ACallAssignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label738: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction353___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15321, LOCATE_parser___ReduceAction353___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction353].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label739: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction353].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction354___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15325, LOCATE_parser___ReduceAction354___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 15334); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 15336); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 15345); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 15347); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/) /*new ABraAssignExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label740: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction354___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15357, LOCATE_parser___ReduceAction354___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction354].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label741: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction354].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction355___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15361, LOCATE_parser___ReduceAction355___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 15371); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 15373); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 15375); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 15377); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*passignopnode4*/,  variable[13] /*pexprnode5*/) /*new AAttrReassignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label742: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction355___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15387, LOCATE_parser___ReduceAction355___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction355].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label743: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction355].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction356___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15391, LOCATE_parser___ReduceAction356___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 15400); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 15402); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 15404); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*passignopnode4*/,  variable[10] /*pexprnode5*/) /*new AAttrReassignExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label744: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction356___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15414, LOCATE_parser___ReduceAction356___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction356].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label745: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction356].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction357___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15418, LOCATE_parser___ReduceAction357___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 15430); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 15432); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 15434); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 15443); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 15445); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*passignopnode6*/,  variable[16] /*pexprnode7*/) /*new ACallReassignExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label746: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction357___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15456, LOCATE_parser___ReduceAction357___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction357].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label747: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction357].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction358___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15460, LOCATE_parser___ReduceAction358___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction358___action, LOCATE_parser, 15471); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction358___action, LOCATE_parser, 15473); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction358___action, LOCATE_parser, 15482); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction358___action, LOCATE_parser, 15484); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*passignopnode6*/,  variable[13] /*pexprnode7*/) /*new ACallReassignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label748: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction358___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15495, LOCATE_parser___ReduceAction358___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction358].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label749: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction358].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction359___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15499, LOCATE_parser___ReduceAction359___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction359___action, LOCATE_parser, 15508); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction359___action, LOCATE_parser, 15510); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*passignopnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*passignopnode5*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction359___action, LOCATE_parser, 15519); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction359___action, LOCATE_parser, 15521); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*passignopnode5*/,  variable[12] /*pexprnode6*/) /*new ABraReassignExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label750: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction359___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15531, LOCATE_parser___ReduceAction359___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction359].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label751: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction359].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction360___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15535, LOCATE_parser___ReduceAction360___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tpluseqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tpluseqnode2*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction360___action, LOCATE_parser, 15540); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop( variable[5] /*tpluseqnode2*/) /*new APlusAssignOp*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*passignopnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label752: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction360___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15547, LOCATE_parser___ReduceAction360___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction360].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label753: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction360].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction361___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15551, LOCATE_parser___ReduceAction361___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tminuseqnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tminuseqnode2*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction361___action, LOCATE_parser, 15556); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop( variable[5] /*tminuseqnode2*/) /*new AMinusAssignOp*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*passignopnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(34)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label754: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction361___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15563, LOCATE_parser___ReduceAction361___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction361].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label755: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction361].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction362___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15567, LOCATE_parser___ReduceAction362___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction362___action, LOCATE_parser, 15573); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction362___action, LOCATE_parser, 15575); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr( variable[6] /*tkwdonode2*/,  variable[7] /*pexprnode3*/) /*new ADoExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(35)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label756: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction362___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15583, LOCATE_parser___ReduceAction362___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction362].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label757: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction362].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction363___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15587, LOCATE_parser___ReduceAction363___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction363___action, LOCATE_parser, 15599); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction363___action, LOCATE_parser, 15601); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction363___action, LOCATE_parser, 15603); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction363___action, LOCATE_parser, 15605); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[12] /*tkwifnode2*/,  variable[13] /*pexprnode3*/,  variable[14] /*pexprnode4*/,  variable[15] /*pexprnode5*/) /*new AIfExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label758: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction363___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15615, LOCATE_parser___ReduceAction363___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction363].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label759: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction363].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction364___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15619, LOCATE_parser___ReduceAction364___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction364___action, LOCATE_parser, 15629); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction364___action, LOCATE_parser, 15631); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction364___action, LOCATE_parser, 15633); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[10] /*tkwifnode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*pexprnode4*/,  NIT_NULL /*null*/) /*new AIfExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label760: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction364___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15643, LOCATE_parser___ReduceAction364___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction364].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label761: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction364].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction365___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15647, LOCATE_parser___ReduceAction365___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction365___action, LOCATE_parser, 15660); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction365___action, LOCATE_parser, 15662); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction365___action, LOCATE_parser, 15665); nit_exit(1);}
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[16] /*pexprnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*pexprnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*pexprnode5*/)( variable[16] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[17])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  variable[16] /*pexprnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[15] /*listnode6*/) /*new ABlockExpr*/;
-  variable[17] = variable[18];
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction365___action, LOCATE_parser, 15673); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[13] /*tkwifnode2*/,  variable[14] /*pexprnode3*/,  variable[17] /*pexprnode4*/,  variable[18] /*pexprnode7*/) /*new AIfExpr*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label762: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction365___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15683, LOCATE_parser___ReduceAction365___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction365].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label763: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction365].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction366___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15687, LOCATE_parser___ReduceAction366___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 15701); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 15703); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[16] = variable[17];
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 15706); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 15708); nit_exit(1);}
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[17] /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable[17] /*pexprnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[17] /*pexprnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[17] /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[17] /*pexprnode5*/)( variable[17] /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  variable[17] /*pexprnode5*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[18] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*listnode6*/)( variable[18] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[19])) { /*if*/
-    /* Register variable[19]: Result */
-    variable[19] = CALL_abstract_collection___Collection___is_empty( variable[16] /*listnode7*/)( variable[16] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[19])) { /*if*/
-      variable[16] =  variable[18] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[16] /*listnode7*/)( variable[16] /*listnode7*/,  variable[18] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[16] /*listnode7*/) /*new ABlockExpr*/;
-  variable[19] = variable[20];
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 15723); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[14] /*tkwifnode2*/,  variable[15] /*pexprnode3*/,  variable[19] /*pexprnode4*/,  variable[20] /*pexprnode8*/) /*new AIfExpr*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label764: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction366___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15733, LOCATE_parser___ReduceAction366___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction366].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label765: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction366].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction367___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15737, LOCATE_parser___ReduceAction367___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction367___action, LOCATE_parser, 15747); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction367___action, LOCATE_parser, 15749); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction367___action, LOCATE_parser, 15751); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[10] /*tkwifnode2*/,  variable[11] /*pexprnode3*/,  NIT_NULL /*null*/,  variable[12] /*pexprnode5*/) /*new AIfExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label766: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction367___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15761, LOCATE_parser___ReduceAction367___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction367].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label767: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction367].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction368___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15765, LOCATE_parser___ReduceAction368___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 15776); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 15778); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction368___action, LOCATE_parser, 15780); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[11] /*tkwifnode2*/,  variable[12] /*pexprnode3*/,  NIT_NULL /*null*/,  variable[13] /*pexprnode5*/) /*new AIfExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(36)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label768: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction368___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15790, LOCATE_parser___ReduceAction368___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction368].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label769: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction368].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction369___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15794, LOCATE_parser___ReduceAction369___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction369___action, LOCATE_parser, 15800); nit_exit(1);}
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label770: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction369___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15804, LOCATE_parser___ReduceAction369___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction369].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label771: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction369].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction370___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15808, LOCATE_parser___ReduceAction370___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(37)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label772: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction370___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15815, LOCATE_parser___ReduceAction370___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction370].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label773: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction370].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction371___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15819, LOCATE_parser___ReduceAction371___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 15829); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 15831); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 15833); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 15835); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr( variable[10] /*tkwwhilenode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*tkwdonode4*/,  variable[13] /*pexprnode5*/) /*new AWhileExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label774: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction371___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15845, LOCATE_parser___ReduceAction371___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction371].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label775: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction371].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction372___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15849, LOCATE_parser___ReduceAction372___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwfornode2*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwfornode2*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 15863); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 15865); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 15867); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist9*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 15869); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 15871); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[14] /*tkwfornode2*/,  variable[15] /*tidnode3*/,  variable[16] /*pexprnode4*/,  variable[17] /*tkwdonode5*/,  variable[18] /*pexprnode6*/) /*new AForExpr*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label776: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction372___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15882, LOCATE_parser___ReduceAction372___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction372].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label777: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction372].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction373___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15886, LOCATE_parser___ReduceAction373___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction373___action, LOCATE_parser, 15892); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction373___action, LOCATE_parser, 15894); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[6] /*tkwassertnode2*/,  NIT_NULL /*null*/,  variable[7] /*pexprnode4*/) /*new AAssertExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label778: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction373___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15903, LOCATE_parser___ReduceAction373___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction373].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label779: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction373].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction374___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15907, LOCATE_parser___ReduceAction374___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 15914); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 15916); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 15918); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[7] /*tkwassertnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*pexprnode4*/) /*new AAssertExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label780: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction374___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15927, LOCATE_parser___ReduceAction374___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction374].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label781: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction374].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction375___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15931, LOCATE_parser___ReduceAction375___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction375___action, LOCATE_parser, 15937); nit_exit(1);}
-  variable[3] =  variable[6] /*tidnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label782: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction375___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15941, LOCATE_parser___ReduceAction375___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction375].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label783: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction375].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction376___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15945, LOCATE_parser___ReduceAction376___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction376___action, LOCATE_parser, 15950); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label784: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction376___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 15954, LOCATE_parser___ReduceAction376___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction376].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label785: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction376].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction377___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 15958, LOCATE_parser___ReduceAction377___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 15970); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 15972); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 15974); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 15983); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label786: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction377___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16000, LOCATE_parser___ReduceAction377___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction377].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label787: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction377].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction378___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16004, LOCATE_parser___ReduceAction378___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction378___action, LOCATE_parser, 16015); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction378___action, LOCATE_parser, 16017); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction378___action, LOCATE_parser, 16026); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label788: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction378___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16043, LOCATE_parser___ReduceAction378___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction378].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label789: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction378].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction379___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16047, LOCATE_parser___ReduceAction379___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 16056); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 16058); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 16067); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[9] /*pexprnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/) /*new ABraExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label790: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction379___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16083, LOCATE_parser___ReduceAction379___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction379].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label791: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction379].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction380___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16087, LOCATE_parser___ReduceAction380___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction380___action, LOCATE_parser, 16092); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label792: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction380___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16096, LOCATE_parser___ReduceAction380___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction380].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label793: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction380].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction381___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16100, LOCATE_parser___ReduceAction381___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16115); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16117); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16119); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16121); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16123); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 16125); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/) /*new AIfexprExpr*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label794: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction381___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16137, LOCATE_parser___ReduceAction381___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction381].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label795: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction381].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction382___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16141, LOCATE_parser___ReduceAction382___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction382___action, LOCATE_parser, 16146); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label796: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction382___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16150, LOCATE_parser___ReduceAction382___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction382].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label797: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction382].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction383___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16154, LOCATE_parser___ReduceAction383___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction383___action, LOCATE_parser, 16162); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction383___action, LOCATE_parser, 16164); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AOrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label798: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction383___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16172, LOCATE_parser___ReduceAction383___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction383].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label799: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction383].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction384___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16176, LOCATE_parser___ReduceAction384___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction384___action, LOCATE_parser, 16184); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction384___action, LOCATE_parser, 16186); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AAndExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label800: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction384___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16194, LOCATE_parser___ReduceAction384___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction384].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label801: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction384].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction385___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16198, LOCATE_parser___ReduceAction385___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction385___action, LOCATE_parser, 16203); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label802: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction385___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16207, LOCATE_parser___ReduceAction385___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction385].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label803: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction385].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction386___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16211, LOCATE_parser___ReduceAction386___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction386___action, LOCATE_parser, 16218); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction386___action, LOCATE_parser, 16220); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/) /*new ANotExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label804: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction386___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16228, LOCATE_parser___ReduceAction386___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction386].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label805: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction386].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction387___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16232, LOCATE_parser___ReduceAction387___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction387___action, LOCATE_parser, 16237); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label806: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction387___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16241, LOCATE_parser___ReduceAction387___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction387].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label807: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction387].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction388___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16245, LOCATE_parser___ReduceAction388___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction388___action, LOCATE_parser, 16253); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction388___action, LOCATE_parser, 16255); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEqExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label808: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction388___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16263, LOCATE_parser___ReduceAction388___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction388].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label809: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction388].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction389___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16267, LOCATE_parser___ReduceAction389___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction389___action, LOCATE_parser, 16275); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction389___action, LOCATE_parser, 16277); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label810: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction389___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16285, LOCATE_parser___ReduceAction389___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction389].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label811: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction389].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction390___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16289, LOCATE_parser___ReduceAction390___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction390___action, LOCATE_parser, 16297); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction390___action, LOCATE_parser, 16299); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ANeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label812: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction390___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16307, LOCATE_parser___ReduceAction390___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction390].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label813: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction390].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction391___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16311, LOCATE_parser___ReduceAction391___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction391___action, LOCATE_parser, 16319); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction391___action, LOCATE_parser, 16321); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label814: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction391___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16329, LOCATE_parser___ReduceAction391___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction391].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label815: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction391].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction392___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16333, LOCATE_parser___ReduceAction392___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction392___action, LOCATE_parser, 16341); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction392___action, LOCATE_parser, 16343); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label816: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction392___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16351, LOCATE_parser___ReduceAction392___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction392].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label817: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction392].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction393___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16355, LOCATE_parser___ReduceAction393___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction393___action, LOCATE_parser, 16363); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction393___action, LOCATE_parser, 16365); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label818: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction393___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16373, LOCATE_parser___ReduceAction393___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction393].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label819: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction393].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction394___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16377, LOCATE_parser___ReduceAction394___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction394___action, LOCATE_parser, 16385); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction394___action, LOCATE_parser, 16387); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label820: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction394___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16395, LOCATE_parser___ReduceAction394___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction394].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label821: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction394].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction395___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16399, LOCATE_parser___ReduceAction395___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction395___action, LOCATE_parser, 16407); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction395___action, LOCATE_parser, 16409); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarshipExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label822: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction395___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16417, LOCATE_parser___ReduceAction395___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction395].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label823: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction395].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction396___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16421, LOCATE_parser___ReduceAction396___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction396___action, LOCATE_parser, 16429); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction396___action, LOCATE_parser, 16431); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/) /*new AIsaExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label824: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction396___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16439, LOCATE_parser___ReduceAction396___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction396].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label825: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction396].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction397___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16443, LOCATE_parser___ReduceAction397___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction397___action, LOCATE_parser, 16448); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label826: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction397___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16452, LOCATE_parser___ReduceAction397___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction397].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label827: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction397].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction398___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16456, LOCATE_parser___ReduceAction398___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction398___action, LOCATE_parser, 16464); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction398___action, LOCATE_parser, 16466); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APlusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label828: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction398___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16474, LOCATE_parser___ReduceAction398___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction398].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label829: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction398].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction399___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16478, LOCATE_parser___ReduceAction399___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 16486); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 16488); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AMinusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label830: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction399___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16496, LOCATE_parser___ReduceAction399___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction399].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label831: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction399].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction400___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16500, LOCATE_parser___ReduceAction400___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction400___action, LOCATE_parser, 16505); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label832: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction400___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16509, LOCATE_parser___ReduceAction400___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction400].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label833: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction400].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction401___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16513, LOCATE_parser___ReduceAction401___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction401___action, LOCATE_parser, 16521); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction401___action, LOCATE_parser, 16523); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label834: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction401___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16531, LOCATE_parser___ReduceAction401___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction401].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label835: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction401].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction402___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16535, LOCATE_parser___ReduceAction402___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction402___action, LOCATE_parser, 16543); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction402___action, LOCATE_parser, 16545); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ASlashExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label836: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction402___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16553, LOCATE_parser___ReduceAction402___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction402].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label837: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction402].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction403___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16557, LOCATE_parser___ReduceAction403___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction403___action, LOCATE_parser, 16565); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction403___action, LOCATE_parser, 16567); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APercentExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(48)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label838: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction403___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16575, LOCATE_parser___ReduceAction403___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction403].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label839: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction403].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction404___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16579, LOCATE_parser___ReduceAction404___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction404___action, LOCATE_parser, 16584); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label840: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction404___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16588, LOCATE_parser___ReduceAction404___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction404].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label841: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction404].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction405___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16592, LOCATE_parser___ReduceAction405___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 16599); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 16601); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/) /*new AUminusExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label842: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction405___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16609, LOCATE_parser___ReduceAction405___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction405].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label843: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction405].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction406___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16613, LOCATE_parser___ReduceAction406___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 16620); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 16622); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/) /*new AOnceExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label844: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction406___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16630, LOCATE_parser___ReduceAction406___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction406].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label845: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction406].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction407___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16634, LOCATE_parser___ReduceAction407___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction407___action, LOCATE_parser, 16639); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label846: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction407___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16643, LOCATE_parser___ReduceAction407___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction407].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label847: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction407].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction408___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16647, LOCATE_parser___ReduceAction408___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 16656); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 16658); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 16660); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/) /*new ANewExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label848: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction408___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16677, LOCATE_parser___ReduceAction408___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction408].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label849: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction408].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction409___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16681, LOCATE_parser___ReduceAction409___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction409___action, LOCATE_parser, 16690); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction409___action, LOCATE_parser, 16692); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction409___action, LOCATE_parser, 16694); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[9] /*tkwissetnode2*/,  variable[10] /*pexprnode3*/,  variable[11] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label850: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction409___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16703, LOCATE_parser___ReduceAction409___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction409].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label851: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction409].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction410___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16707, LOCATE_parser___ReduceAction410___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction410___action, LOCATE_parser, 16713); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction410___action, LOCATE_parser, 16717); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[6] /*tkwissetnode2*/,  variable[7] /*pexprnode3*/,  variable[8] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(50)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label852: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction410___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16726, LOCATE_parser___ReduceAction410___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction410].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label853: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction410].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction411___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16730, LOCATE_parser___ReduceAction411___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction411___action, LOCATE_parser, 16738); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction411___action, LOCATE_parser, 16740); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label854: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction411___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16748, LOCATE_parser___ReduceAction411___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction411].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label855: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction411].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction412___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16752, LOCATE_parser___ReduceAction412___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction412___action, LOCATE_parser, 16759); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label856: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction412___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16767, LOCATE_parser___ReduceAction412___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction412].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label857: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction412].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction413___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16771, LOCATE_parser___ReduceAction413___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction413___action, LOCATE_parser, 16782); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction413___action, LOCATE_parser, 16784); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction413___action, LOCATE_parser, 16786); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/) /*new ACallExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label858: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction413___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16803, LOCATE_parser___ReduceAction413___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction413].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label859: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction413].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction414___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16807, LOCATE_parser___ReduceAction414___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction414___action, LOCATE_parser, 16817); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction414___action, LOCATE_parser, 16819); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/) /*new ACallExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label860: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction414___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16836, LOCATE_parser___ReduceAction414___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction414].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label861: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction414].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction415___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16840, LOCATE_parser___ReduceAction415___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction415___action, LOCATE_parser, 16847); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction415___action, LOCATE_parser, 16849); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label862: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction415___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16865, LOCATE_parser___ReduceAction415___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction415].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label863: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction415].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction416___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16869, LOCATE_parser___ReduceAction416___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction416___action, LOCATE_parser, 16877); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction416___action, LOCATE_parser, 16879); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction416___action, LOCATE_parser, 16881); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label864: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction416___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16897, LOCATE_parser___ReduceAction416___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction416].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label865: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction416].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction417___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16901, LOCATE_parser___ReduceAction417___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction417___action, LOCATE_parser, 16911); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction417___action, LOCATE_parser, 16913); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction417___action, LOCATE_parser, 16915); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/) /*new AInitExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label866: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction417___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16931, LOCATE_parser___ReduceAction417___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction417].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label867: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction417].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction418___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16935, LOCATE_parser___ReduceAction418___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction418___action, LOCATE_parser, 16944); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction418___action, LOCATE_parser, 16946); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/) /*new AInitExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label868: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction418___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16962, LOCATE_parser___ReduceAction418___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction418].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label869: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction418].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction419___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16966, LOCATE_parser___ReduceAction419___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction419___action, LOCATE_parser, 16974); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction419___action, LOCATE_parser, 16976); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[8] /*pexprnode2*/,  variable[6] /*listnode4*/,  variable[7] /*listnode5*/) /*new ABraExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label870: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction419___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 16992, LOCATE_parser___ReduceAction419___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction419].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label871: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction419].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction420___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 16996, LOCATE_parser___ReduceAction420___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction420___action, LOCATE_parser, 17008); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction420___action, LOCATE_parser, 17010); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction420___action, LOCATE_parser, 17012); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction420___action, LOCATE_parser, 17014); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/) /*new ANewExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label872: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction420___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17031, LOCATE_parser___ReduceAction420___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction420].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label873: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction420].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction421___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17035, LOCATE_parser___ReduceAction421___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction421___action, LOCATE_parser, 17048); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction421___action, LOCATE_parser, 17050); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr( variable[13] /*pexprnode2*/,  variable[14] /*pexprnode3*/) /*new ACrangeExpr*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label874: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction421___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17058, LOCATE_parser___ReduceAction421___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction421].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label875: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction421].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction422___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17062, LOCATE_parser___ReduceAction422___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction422___action, LOCATE_parser, 17075); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist7*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction422___action, LOCATE_parser, 17077); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr( variable[13] /*pexprnode2*/,  variable[14] /*pexprnode3*/) /*new AOrangeExpr*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label876: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction422___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17085, LOCATE_parser___ReduceAction422___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction422].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label877: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction422].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction423___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17089, LOCATE_parser___ReduceAction423___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction423___action, LOCATE_parser, 17095); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    /* Register variable[7]: Result */
-    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr( variable[5] /*listnode3*/) /*new AArrayExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label878: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction423___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17109, LOCATE_parser___ReduceAction423___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction423].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label879: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction423].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction424___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17113, LOCATE_parser___ReduceAction424___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction424___action, LOCATE_parser, 17118); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/) /*new ASelfExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label880: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction424___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17125, LOCATE_parser___ReduceAction424___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction424].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label881: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction424].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction425___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17129, LOCATE_parser___ReduceAction425___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction425___action, LOCATE_parser, 17134); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/) /*new ATrueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label882: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction425___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17141, LOCATE_parser___ReduceAction425___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction425].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label883: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction425].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction426___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17145, LOCATE_parser___ReduceAction426___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction426___action, LOCATE_parser, 17150); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/) /*new AFalseExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label884: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction426___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17157, LOCATE_parser___ReduceAction426___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction426].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label885: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction426].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction427___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17161, LOCATE_parser___ReduceAction427___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction427___action, LOCATE_parser, 17166); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/) /*new ANullExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label886: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction427___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17173, LOCATE_parser___ReduceAction427___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction427].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label887: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction427].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction428___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17177, LOCATE_parser___ReduceAction428___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction428___action, LOCATE_parser, 17182); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/) /*new AIntExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label888: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction428___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17189, LOCATE_parser___ReduceAction428___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction428].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label889: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction428].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction429___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17193, LOCATE_parser___ReduceAction429___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction429___action, LOCATE_parser, 17198); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/) /*new AFloatExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label890: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction429___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17205, LOCATE_parser___ReduceAction429___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction429].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label891: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction429].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction430___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17209, LOCATE_parser___ReduceAction430___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction430___action, LOCATE_parser, 17214); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/) /*new ACharExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label892: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction430___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17221, LOCATE_parser___ReduceAction430___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction430].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label893: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction430].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction431___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17225, LOCATE_parser___ReduceAction431___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction431___action, LOCATE_parser, 17230); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/) /*new AStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label894: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction431___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17237, LOCATE_parser___ReduceAction431___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction431].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label895: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction431].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction432___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17241, LOCATE_parser___ReduceAction432___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction432___action, LOCATE_parser, 17246); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label896: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction432___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17250, LOCATE_parser___ReduceAction432___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction432].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label897: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction432].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction433___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17254, LOCATE_parser___ReduceAction433___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction433___action, LOCATE_parser, 17261); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label898: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction433___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17265, LOCATE_parser___ReduceAction433___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction433].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label899: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction433].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction434___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17269, LOCATE_parser___ReduceAction434___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction434___action, LOCATE_parser, 17283); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction434___action, LOCATE_parser, 17285); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction434___action, LOCATE_parser, 17287); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/) /*new AAsCastExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label900: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction434___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17296, LOCATE_parser___ReduceAction434___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction434].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label901: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction434].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction435___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17300, LOCATE_parser___ReduceAction435___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 17316); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 17318); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwnotnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwnotnode4*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 17320); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwnullnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwnullnode5*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 17322); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr( variable[16] /*pexprnode2*/,  variable[17] /*tkwasnode3*/,  variable[18] /*tkwnotnode4*/,  variable[19] /*tkwnullnode5*/) /*new AAsNotnullExpr*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label902: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction435___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17332, LOCATE_parser___ReduceAction435___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction435].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label903: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction435].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction436___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17336, LOCATE_parser___ReduceAction436___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction436___action, LOCATE_parser, 17343); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction436___action, LOCATE_parser, 17345); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode4*/)( variable[6] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode3*/)( variable[8] /*pexprnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode4*/)( variable[6] /*listnode4*/,  variable[8] /*pexprnode3*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable[6] /*listnode4*/) /*new ASuperstringExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label904: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction436___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17362, LOCATE_parser___ReduceAction436___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction436].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label905: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction436].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction437___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17366, LOCATE_parser___ReduceAction437___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 17374); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 17376); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 17378); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[8] /*listnode2*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[9] /*listnode3*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[9] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode4*/)( variable[10] /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*pexprnode4*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable[7] /*listnode5*/) /*new ASuperstringExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(52)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label906: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction437___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17402, LOCATE_parser___ReduceAction437___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction437].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label907: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction437].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction438___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17406, LOCATE_parser___ReduceAction438___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction438___action, LOCATE_parser, 17415); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction438___action, LOCATE_parser, 17417); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(53)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label908: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction438___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17427, LOCATE_parser___ReduceAction438___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction438].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label909: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction438].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction439___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17431, LOCATE_parser___ReduceAction439___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstartstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstartstringnode2*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction439___action, LOCATE_parser, 17436); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr( variable[5] /*tstartstringnode2*/) /*new AStartStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label910: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction439___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17443, LOCATE_parser___ReduceAction439___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction439].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label911: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction439].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction440___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17447, LOCATE_parser___ReduceAction440___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 17456); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 17458); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode1*/)( variable[9] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[8] /*listnode3*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label912: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction440___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17468, LOCATE_parser___ReduceAction440___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction440].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label913: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction440].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction441___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17472, LOCATE_parser___ReduceAction441___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tmidstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tmidstringnode2*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction441___action, LOCATE_parser, 17477); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr( variable[5] /*tmidstringnode2*/) /*new AMidStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(56)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label914: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction441___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17484, LOCATE_parser___ReduceAction441___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction441].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label915: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction441].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction442___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17488, LOCATE_parser___ReduceAction442___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tendstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tendstringnode2*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction442___action, LOCATE_parser, 17493); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr( variable[5] /*tendstringnode2*/) /*new AEndStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(57)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label916: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction442___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17500, LOCATE_parser___ReduceAction442___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction442].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label917: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction442].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction443___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17504, LOCATE_parser___ReduceAction443___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction443___action, LOCATE_parser, 17514); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label918: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction443___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17521, LOCATE_parser___ReduceAction443___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction443].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label919: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction443].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction444___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17525, LOCATE_parser___ReduceAction444___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 17536); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 17538); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label920: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction444___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17552, LOCATE_parser___ReduceAction444___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction444].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label921: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction444].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction445___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17556, LOCATE_parser___ReduceAction445___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label922: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction445___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17566, LOCATE_parser___ReduceAction445___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction445].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label923: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction445].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction446___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17570, LOCATE_parser___ReduceAction446___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(58)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label924: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction446___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17577, LOCATE_parser___ReduceAction446___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction446].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label925: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction446].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction447___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17581, LOCATE_parser___ReduceAction447___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction447___action, LOCATE_parser, 17591); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label926: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction447___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17598, LOCATE_parser___ReduceAction447___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction447].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label927: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction447].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction448___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17602, LOCATE_parser___ReduceAction448___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction448___action, LOCATE_parser, 17613); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction448___action, LOCATE_parser, 17615); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label928: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction448___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17629, LOCATE_parser___ReduceAction448___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction448].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label929: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction448].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction449___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17633, LOCATE_parser___ReduceAction449___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction449___action, LOCATE_parser, 17639); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label930: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction449___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17646, LOCATE_parser___ReduceAction449___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction449].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label931: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction449].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction450___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17650, LOCATE_parser___ReduceAction450___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*listnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label932: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction450___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17660, LOCATE_parser___ReduceAction450___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction450].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label933: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction450].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction451___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17664, LOCATE_parser___ReduceAction451___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*listnode1*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label934: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction451___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17671, LOCATE_parser___ReduceAction451___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction451].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label935: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction451].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction452___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17675, LOCATE_parser___ReduceAction452___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction452___action, LOCATE_parser, 17685); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode1*/)( variable[10] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode2*/)( variable[9] /*listnode2*/,  variable[10] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode2*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label936: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction452___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17692, LOCATE_parser___ReduceAction452___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction452].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label937: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction452].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction453___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17696, LOCATE_parser___ReduceAction453___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction453___action, LOCATE_parser, 17707); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction453___action, LOCATE_parser, 17709); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[11] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*pexprnode1*/)( variable[11] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[11] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode2*/)( variable[12] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode3*/)( variable[10] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[10] =  variable[12] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  variable[12] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[10] /*listnode3*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label938: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction453___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17723, LOCATE_parser___ReduceAction453___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction453].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label939: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction453].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction454___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17727, LOCATE_parser___ReduceAction454___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction454___action, LOCATE_parser, 17735); nit_exit(1);}
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(61)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label940: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction454___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17739, LOCATE_parser___ReduceAction454___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction454].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label941: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction454].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction455___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17743, LOCATE_parser___ReduceAction455___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction455___action, LOCATE_parser, 17749); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label942: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction455___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17756, LOCATE_parser___ReduceAction455___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction455].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label943: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction455].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction456___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17760, LOCATE_parser___ReduceAction456___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction456___action, LOCATE_parser, 17770); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction456___action, LOCATE_parser, 17772); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode1*/)( variable[10] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode3*/)( variable[9] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[10] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  variable[10] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[11] /*tidnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*tidnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*tidnode2*/)( variable[11] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode3*/)( variable[9] /*listnode3*/,  variable[11] /*tidnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[9] /*listnode3*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(62)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label944: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction456___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17786, LOCATE_parser___ReduceAction456___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction456].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label945: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction456].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction457___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17790, LOCATE_parser___ReduceAction457___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction457___action, LOCATE_parser, 17796); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[5] /*listnode2*/,  variable[6] /*tclassidnode3*/) /*new AQualified*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pqualifiednode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label946: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction457___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17804, LOCATE_parser___ReduceAction457___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction457].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label947: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction457].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction458___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17808, LOCATE_parser___ReduceAction458___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction458___action, LOCATE_parser, 17815); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tclassidnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*tclassidnode4*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction458___action, LOCATE_parser, 17824); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[6] /*listnode3*/,  variable[8] /*tclassidnode4*/) /*new AQualified*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pqualifiednode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label948: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction458___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17832, LOCATE_parser___ReduceAction458___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction458].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label949: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction458].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction459___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17836, LOCATE_parser___ReduceAction459___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction459___action, LOCATE_parser, 17842); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    /* Register variable[7]: Result */
-    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AQualified_parser_prod___AQualified___init_aqualified( variable[5] /*listnode3*/,  NIT_NULL /*null*/) /*new AQualified*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pqualifiednode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label950: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction459___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17857, LOCATE_parser___ReduceAction459___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction459].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label951: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction459].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction460___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17861, LOCATE_parser___ReduceAction460___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction460___action, LOCATE_parser, 17868); nit_exit(1);}
-  variable[3] =  variable[7] /*tidnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(64)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label952: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction460___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17872, LOCATE_parser___ReduceAction460___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction460].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label953: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction460].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction461___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17876, LOCATE_parser___ReduceAction461___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tclassidnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*tclassidnode1*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction461___action, LOCATE_parser, 17883); nit_exit(1);}
-  variable[3] =  variable[7] /*tclassidnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(65)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label954: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction461___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17887, LOCATE_parser___ReduceAction461___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction461].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label955: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction461].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction462___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17891, LOCATE_parser___ReduceAction462___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label956: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction462___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17897, LOCATE_parser___ReduceAction462___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction462].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label957: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction462].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction463___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17901, LOCATE_parser___ReduceAction463___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label958: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction463___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17907, LOCATE_parser___ReduceAction463___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction463].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label959: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction463].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction464___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17911, LOCATE_parser___ReduceAction464___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction464___action, LOCATE_parser, 17917); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode2*/)( variable[6] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    /* Register variable[7]: Result */
-    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode3*/)( variable[5] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode3*/)( variable[5] /*listnode3*/,  variable[6] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_ADoc_parser_prod___ADoc___init_adoc( variable[5] /*listnode3*/) /*new ADoc*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pdocnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label960: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction464___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17931, LOCATE_parser___ReduceAction464___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction464].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label961: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction464].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction465___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17935, LOCATE_parser___ReduceAction465___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction465___action, LOCATE_parser, 17942); nit_exit(1);}
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode2*/)( variable[7] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[8])) { /*if*/
-    /* Register variable[8]: Result */
-    variable[8] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[8])) { /*if*/
-      variable[6] =  variable[7] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ADoc_parser_prod___ADoc___init_adoc( variable[6] /*listnode3*/) /*new ADoc*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pdocnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label962: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction465___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17956, LOCATE_parser___ReduceAction465___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction465].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label963: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction465].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction466___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17960, LOCATE_parser___ReduceAction466___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label964: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction466___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17967, LOCATE_parser___ReduceAction466___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction466].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label965: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction466].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction467___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17971, LOCATE_parser___ReduceAction467___action};
-  val_t variable[5];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  variable[3] =  NIT_NULL /*null*/ /*node_list=*/;
-  /* Register variable[4]: Result */
-  variable[4] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[4],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label966: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction467___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17977, LOCATE_parser___ReduceAction467___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction467].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label967: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction467].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction468___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17981, LOCATE_parser___ReduceAction468___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pdocnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pdocnode1*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction468___action, LOCATE_parser, 17986); nit_exit(1);}
-  variable[3] =  variable[5] /*pdocnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label968: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction468___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 17990, LOCATE_parser___ReduceAction468___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction468].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label969: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction468].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction469___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 17994, LOCATE_parser___ReduceAction469___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label970: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction469___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18001, LOCATE_parser___ReduceAction469___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction469].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label971: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction469].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction470___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18005, LOCATE_parser___ReduceAction470___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label972: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction470___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18013, LOCATE_parser___ReduceAction470___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction470].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label973: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction470].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction471___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18017, LOCATE_parser___ReduceAction471___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label974: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction471___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18023, LOCATE_parser___ReduceAction471___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction471].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label975: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction471].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction472___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18027, LOCATE_parser___ReduceAction472___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction472___action, LOCATE_parser, 18033); nit_exit(1);}
-  variable[3] =  variable[6] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label976: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction472___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18037, LOCATE_parser___ReduceAction472___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction472].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label977: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction472].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction473___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18041, LOCATE_parser___ReduceAction473___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18052); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18054); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18056); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18058); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18060); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 18062); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  variable[16] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label978: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction473___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18075, LOCATE_parser___ReduceAction473___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction473].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label979: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction473].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction474___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18079, LOCATE_parser___ReduceAction474___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18091); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18093); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18095); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18097); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18099); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18101); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 18103); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  variable[18] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label980: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction474___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18116, LOCATE_parser___ReduceAction474___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction474].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label981: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction474].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction475___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18120, LOCATE_parser___ReduceAction475___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18132); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18134); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18136); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18138); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18140); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist7*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 18142); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label982: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction475___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18155, LOCATE_parser___ReduceAction475___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction475].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label983: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction475].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction476___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18159, LOCATE_parser___ReduceAction476___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18172); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18174); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18176); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18178); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18180); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18182); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[5] /*nodearraylist8*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 18184); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*pexprnode8*/) /*new AConcreteMethPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label984: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction476___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18197, LOCATE_parser___ReduceAction476___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction476].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label985: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction476].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction477___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18201, LOCATE_parser___ReduceAction477___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 18212); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist2*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[12] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 18214); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 18216); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 18218); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[15] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 18220); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[11] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[12] /*pvisibilitynode4*/,  variable[13] /*tkwmethnode5*/,  variable[14] /*pmethidnode6*/,  variable[15] /*psignaturenode7*/,  NIT_NULL /*null*/) /*new AExternMethPropdef*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label986: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction477___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18233, LOCATE_parser___ReduceAction477___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction477].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label987: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction477].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction478___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18237, LOCATE_parser___ReduceAction478___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18249); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18251); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18253); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18255); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[16] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18257); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[17] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 18259); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  variable[13] /*tkwredefnode3*/,  variable[14] /*pvisibilitynode4*/,  variable[15] /*tkwmethnode5*/,  variable[16] /*pmethidnode6*/,  variable[17] /*psignaturenode7*/,  NIT_NULL /*null*/) /*new AExternMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label988: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction478___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18272, LOCATE_parser___ReduceAction478___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction478].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label989: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction478].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction479___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18276, LOCATE_parser___ReduceAction479___action};
-  val_t variable[20];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18288); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[10] /*nodearraylist2*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[13] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18290); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18292); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[8] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18294); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist5*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[16] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18296); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[17] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 18298); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  /* Register variable[19]: Result */
-  variable[19] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[12] /*pdocnode2*/,  NIT_NULL /*null*/,  variable[13] /*pvisibilitynode4*/,  variable[14] /*tkwmethnode5*/,  variable[15] /*pmethidnode6*/,  variable[16] /*psignaturenode7*/,  variable[17] /*tstringnode8*/) /*new AExternMethPropdef*/;
-  variable[18] = variable[19];
-  variable[3] =  variable[18] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[19]: Result */
-  variable[19] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[19],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label990: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction479___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18311, LOCATE_parser___ReduceAction479___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction479].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label991: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction479].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction480___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18315, LOCATE_parser___ReduceAction480___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[12] /*nodearraylist1*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable[13] /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18328); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[11] /*nodearraylist2*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18330); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable[15] /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18332); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[9] /*nodearraylist4*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable[16] /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18334); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[8] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable[17] /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18336); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[7] /*nodearraylist6*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable[18] /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18338); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[4] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable[19] /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 18340); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable[13] /*pdocnode2*/,  variable[14] /*tkwredefnode3*/,  variable[15] /*pvisibilitynode4*/,  variable[16] /*tkwmethnode5*/,  variable[17] /*pmethidnode6*/,  variable[18] /*psignaturenode7*/,  variable[19] /*tstringnode8*/) /*new AExternMethPropdef*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*ppropdefnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label992: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction480___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18353, LOCATE_parser___ReduceAction480___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction480].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label993: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction480].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction481___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18357, LOCATE_parser___ReduceAction481___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction481___action, LOCATE_parser, 18363); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AType_parser_prod___AType___init_atype( NIT_NULL /*null*/,  variable[6] /*tclassidnode3*/,  variable[5] /*listnode4*/) /*new AType*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label994: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction481___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18372, LOCATE_parser___ReduceAction481___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction481].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label995: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction481].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction482___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18376, LOCATE_parser___ReduceAction482___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnullablenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnullablenode2*/, COLOR_TKwnullable, ID_TKwnullable)) /*cast TKwnullable*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction482___action, LOCATE_parser, 18383); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction482___action, LOCATE_parser, 18385); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AType_parser_prod___AType___init_atype( variable[7] /*tkwnullablenode2*/,  variable[8] /*tclassidnode3*/,  variable[6] /*listnode4*/) /*new AType*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*ptypenode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label996: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction482___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18394, LOCATE_parser___ReduceAction482___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction482].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label997: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction482].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction483___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18398, LOCATE_parser___ReduceAction483___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction483___action, LOCATE_parser, 18403); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label998: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction483___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18407, LOCATE_parser___ReduceAction483___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction483].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label999: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction483].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction484___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18411, LOCATE_parser___ReduceAction484___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 18423); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 18425); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 18427); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 18436); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1000: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction484___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18453, LOCATE_parser___ReduceAction484___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction484].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1001: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction484].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction485___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18457, LOCATE_parser___ReduceAction485___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction485___action, LOCATE_parser, 18468); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction485___action, LOCATE_parser, 18470); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction485___action, LOCATE_parser, 18479); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1002: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction485___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18496, LOCATE_parser___ReduceAction485___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction485].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1003: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction485].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction486___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18500, LOCATE_parser___ReduceAction486___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 18505); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1004: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction486___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18509, LOCATE_parser___ReduceAction486___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction486].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1005: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction486].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction487___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18513, LOCATE_parser___ReduceAction487___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18528); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18530); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18532); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18534); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18536); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 18538); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/) /*new AIfexprExpr*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1006: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction487___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18550, LOCATE_parser___ReduceAction487___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction487].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1007: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction487].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction488___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18554, LOCATE_parser___ReduceAction488___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction488___action, LOCATE_parser, 18559); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1008: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction488___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18563, LOCATE_parser___ReduceAction488___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction488].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1009: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction488].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction489___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18567, LOCATE_parser___ReduceAction489___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction489___action, LOCATE_parser, 18575); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction489___action, LOCATE_parser, 18577); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AOrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1010: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction489___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18585, LOCATE_parser___ReduceAction489___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction489].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1011: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction489].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction490___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18589, LOCATE_parser___ReduceAction490___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction490___action, LOCATE_parser, 18597); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction490___action, LOCATE_parser, 18599); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AAndExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1012: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction490___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18607, LOCATE_parser___ReduceAction490___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction490].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1013: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction490].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction491___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18611, LOCATE_parser___ReduceAction491___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction491___action, LOCATE_parser, 18616); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1014: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction491___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18620, LOCATE_parser___ReduceAction491___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction491].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1015: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction491].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction492___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18624, LOCATE_parser___ReduceAction492___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction492___action, LOCATE_parser, 18631); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction492___action, LOCATE_parser, 18633); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/) /*new ANotExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1016: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction492___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18641, LOCATE_parser___ReduceAction492___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction492].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1017: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction492].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction493___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18645, LOCATE_parser___ReduceAction493___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction493___action, LOCATE_parser, 18650); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1018: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction493___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18654, LOCATE_parser___ReduceAction493___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction493].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1019: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction493].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction494___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18658, LOCATE_parser___ReduceAction494___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction494___action, LOCATE_parser, 18666); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction494___action, LOCATE_parser, 18668); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEqExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1020: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction494___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18676, LOCATE_parser___ReduceAction494___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction494].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1021: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction494].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction495___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18680, LOCATE_parser___ReduceAction495___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction495___action, LOCATE_parser, 18688); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction495___action, LOCATE_parser, 18690); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1022: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction495___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18698, LOCATE_parser___ReduceAction495___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction495].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1023: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction495].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction496___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18702, LOCATE_parser___ReduceAction496___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction496___action, LOCATE_parser, 18710); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction496___action, LOCATE_parser, 18712); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ANeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1024: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction496___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18720, LOCATE_parser___ReduceAction496___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction496].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1025: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction496].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction497___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18724, LOCATE_parser___ReduceAction497___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction497___action, LOCATE_parser, 18732); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction497___action, LOCATE_parser, 18734); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1026: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction497___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18742, LOCATE_parser___ReduceAction497___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction497].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1027: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction497].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction498___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18746, LOCATE_parser___ReduceAction498___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction498___action, LOCATE_parser, 18754); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction498___action, LOCATE_parser, 18756); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1028: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction498___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18764, LOCATE_parser___ReduceAction498___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction498].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1029: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction498].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction499___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18768, LOCATE_parser___ReduceAction499___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 18776); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 18778); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1030: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction499___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18786, LOCATE_parser___ReduceAction499___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction499].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1031: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction499].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction500___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18790, LOCATE_parser___ReduceAction500___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction500___action, LOCATE_parser, 18798); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction500___action, LOCATE_parser, 18800); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1032: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction500___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18808, LOCATE_parser___ReduceAction500___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction500].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1033: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction500].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction501___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18812, LOCATE_parser___ReduceAction501___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction501___action, LOCATE_parser, 18820); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction501___action, LOCATE_parser, 18822); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarshipExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1034: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction501___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18830, LOCATE_parser___ReduceAction501___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction501].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1035: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction501].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction502___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18834, LOCATE_parser___ReduceAction502___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction502___action, LOCATE_parser, 18842); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction502___action, LOCATE_parser, 18844); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/) /*new AIsaExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(77)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1036: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction502___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18852, LOCATE_parser___ReduceAction502___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction502].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1037: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction502].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction503___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18856, LOCATE_parser___ReduceAction503___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction503___action, LOCATE_parser, 18861); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1038: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction503___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18865, LOCATE_parser___ReduceAction503___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction503].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1039: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction503].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction504___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18869, LOCATE_parser___ReduceAction504___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction504___action, LOCATE_parser, 18877); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction504___action, LOCATE_parser, 18879); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APlusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1040: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction504___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18887, LOCATE_parser___ReduceAction504___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction504].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1041: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction504].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction505___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18891, LOCATE_parser___ReduceAction505___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction505___action, LOCATE_parser, 18899); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction505___action, LOCATE_parser, 18901); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AMinusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(78)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1042: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction505___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18909, LOCATE_parser___ReduceAction505___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction505].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1043: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction505].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction506___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18913, LOCATE_parser___ReduceAction506___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction506___action, LOCATE_parser, 18918); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1044: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction506___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18922, LOCATE_parser___ReduceAction506___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction506].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1045: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction506].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction507___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18926, LOCATE_parser___ReduceAction507___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction507___action, LOCATE_parser, 18934); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction507___action, LOCATE_parser, 18936); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1046: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction507___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18944, LOCATE_parser___ReduceAction507___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction507].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1047: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction507].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction508___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18948, LOCATE_parser___ReduceAction508___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 18956); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 18958); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ASlashExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1048: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction508___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18966, LOCATE_parser___ReduceAction508___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction508].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1049: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction508].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction509___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18970, LOCATE_parser___ReduceAction509___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 18978); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 18980); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APercentExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(79)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1050: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction509___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 18988, LOCATE_parser___ReduceAction509___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction509].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1051: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction509].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction510___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 18992, LOCATE_parser___ReduceAction510___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction510___action, LOCATE_parser, 18997); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1052: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction510___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19001, LOCATE_parser___ReduceAction510___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction510].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1053: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction510].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction511___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19005, LOCATE_parser___ReduceAction511___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction511___action, LOCATE_parser, 19012); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction511___action, LOCATE_parser, 19014); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/) /*new AUminusExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1054: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction511___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19022, LOCATE_parser___ReduceAction511___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction511].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1055: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction511].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction512___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19026, LOCATE_parser___ReduceAction512___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 19033); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 19035); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/) /*new AOnceExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(80)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1056: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction512___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19043, LOCATE_parser___ReduceAction512___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction512].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1057: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction512].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction513___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19047, LOCATE_parser___ReduceAction513___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction513___action, LOCATE_parser, 19052); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1058: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction513___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19056, LOCATE_parser___ReduceAction513___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction513].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1059: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction513].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction514___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19060, LOCATE_parser___ReduceAction514___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction514___action, LOCATE_parser, 19069); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction514___action, LOCATE_parser, 19071); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction514___action, LOCATE_parser, 19073); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/) /*new ANewExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1060: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction514___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19090, LOCATE_parser___ReduceAction514___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction514].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1061: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction514].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction515___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19094, LOCATE_parser___ReduceAction515___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction515___action, LOCATE_parser, 19103); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction515___action, LOCATE_parser, 19105); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction515___action, LOCATE_parser, 19107); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[9] /*tkwissetnode2*/,  variable[10] /*pexprnode3*/,  variable[11] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1062: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction515___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19116, LOCATE_parser___ReduceAction515___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction515].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1063: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction515].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction516___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19120, LOCATE_parser___ReduceAction516___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction516___action, LOCATE_parser, 19126); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction516___action, LOCATE_parser, 19130); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[6] /*tkwissetnode2*/,  variable[7] /*pexprnode3*/,  variable[8] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(81)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1064: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction516___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19139, LOCATE_parser___ReduceAction516___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction516].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1065: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction516].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction517___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19143, LOCATE_parser___ReduceAction517___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 19151); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 19153); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1066: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction517___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19161, LOCATE_parser___ReduceAction517___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction517].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1067: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction517].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction518___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19165, LOCATE_parser___ReduceAction518___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction518___action, LOCATE_parser, 19172); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1068: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction518___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19180, LOCATE_parser___ReduceAction518___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction518].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1069: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction518].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction519___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19184, LOCATE_parser___ReduceAction519___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 19195); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 19197); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 19199); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/) /*new ACallExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1070: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction519___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19216, LOCATE_parser___ReduceAction519___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction519].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1071: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction519].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction520___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19220, LOCATE_parser___ReduceAction520___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction520___action, LOCATE_parser, 19230); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction520___action, LOCATE_parser, 19232); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/) /*new ACallExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1072: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction520___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19249, LOCATE_parser___ReduceAction520___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction520].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1073: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction520].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction521___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19253, LOCATE_parser___ReduceAction521___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction521___action, LOCATE_parser, 19260); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction521___action, LOCATE_parser, 19262); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1074: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction521___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19278, LOCATE_parser___ReduceAction521___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction521].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1075: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction521].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction522___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19282, LOCATE_parser___ReduceAction522___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction522___action, LOCATE_parser, 19290); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction522___action, LOCATE_parser, 19292); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction522___action, LOCATE_parser, 19294); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1076: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction522___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19310, LOCATE_parser___ReduceAction522___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction522].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1077: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction522].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction523___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19314, LOCATE_parser___ReduceAction523___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction523___action, LOCATE_parser, 19324); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction523___action, LOCATE_parser, 19326); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction523___action, LOCATE_parser, 19328); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/) /*new AInitExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1078: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction523___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19344, LOCATE_parser___ReduceAction523___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction523].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1079: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction523].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction524___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19348, LOCATE_parser___ReduceAction524___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction524___action, LOCATE_parser, 19357); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction524___action, LOCATE_parser, 19359); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/) /*new AInitExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1080: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction524___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19375, LOCATE_parser___ReduceAction524___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction524].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1081: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction524].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction525___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19379, LOCATE_parser___ReduceAction525___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction525___action, LOCATE_parser, 19391); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction525___action, LOCATE_parser, 19393); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction525___action, LOCATE_parser, 19395); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction525___action, LOCATE_parser, 19397); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/) /*new ANewExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1082: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction525___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19414, LOCATE_parser___ReduceAction525___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction525].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1083: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction525].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction526___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19418, LOCATE_parser___ReduceAction526___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction526___action, LOCATE_parser, 19423); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/) /*new ASelfExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1084: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction526___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19430, LOCATE_parser___ReduceAction526___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction526].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1085: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction526].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction527___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19434, LOCATE_parser___ReduceAction527___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction527___action, LOCATE_parser, 19439); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/) /*new ATrueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1086: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction527___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19446, LOCATE_parser___ReduceAction527___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction527].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1087: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction527].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction528___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19450, LOCATE_parser___ReduceAction528___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction528___action, LOCATE_parser, 19455); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/) /*new AFalseExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1088: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction528___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19462, LOCATE_parser___ReduceAction528___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction528].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1089: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction528].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction529___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19466, LOCATE_parser___ReduceAction529___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction529___action, LOCATE_parser, 19471); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/) /*new ANullExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1090: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction529___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19478, LOCATE_parser___ReduceAction529___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction529].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1091: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction529].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction530___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19482, LOCATE_parser___ReduceAction530___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction530___action, LOCATE_parser, 19487); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/) /*new AIntExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1092: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction530___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19494, LOCATE_parser___ReduceAction530___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction530].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1093: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction530].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction531___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19498, LOCATE_parser___ReduceAction531___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction531___action, LOCATE_parser, 19503); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/) /*new AFloatExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1094: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction531___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19510, LOCATE_parser___ReduceAction531___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction531].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1095: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction531].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction532___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19514, LOCATE_parser___ReduceAction532___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction532___action, LOCATE_parser, 19519); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/) /*new ACharExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1096: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction532___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19526, LOCATE_parser___ReduceAction532___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction532].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1097: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction532].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction533___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19530, LOCATE_parser___ReduceAction533___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction533___action, LOCATE_parser, 19535); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/) /*new AStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1098: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction533___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19542, LOCATE_parser___ReduceAction533___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction533].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1099: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction533].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction534___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19546, LOCATE_parser___ReduceAction534___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction534___action, LOCATE_parser, 19551); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1100: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction534___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19555, LOCATE_parser___ReduceAction534___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction534].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1101: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction534].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction535___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19559, LOCATE_parser___ReduceAction535___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction535___action, LOCATE_parser, 19566); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1102: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction535___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19570, LOCATE_parser___ReduceAction535___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction535].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1103: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction535].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction536___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19574, LOCATE_parser___ReduceAction536___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction536___action, LOCATE_parser, 19588); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction536___action, LOCATE_parser, 19590); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction536___action, LOCATE_parser, 19592); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/) /*new AAsCastExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1104: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction536___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19601, LOCATE_parser___ReduceAction536___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction536].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1105: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction536].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction537___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19605, LOCATE_parser___ReduceAction537___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction537___action, LOCATE_parser, 19621); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction537___action, LOCATE_parser, 19623); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwnotnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwnotnode4*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction537___action, LOCATE_parser, 19625); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwnullnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwnullnode5*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction537___action, LOCATE_parser, 19627); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr( variable[16] /*pexprnode2*/,  variable[17] /*tkwasnode3*/,  variable[18] /*tkwnotnode4*/,  variable[19] /*tkwnullnode5*/) /*new AAsNotnullExpr*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1106: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction537___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19637, LOCATE_parser___ReduceAction537___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction537].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1107: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction537].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction538___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19641, LOCATE_parser___ReduceAction538___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction538___action, LOCATE_parser, 19646); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1108: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction538___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19650, LOCATE_parser___ReduceAction538___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction538].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1109: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction538].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction539___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19654, LOCATE_parser___ReduceAction539___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction539___action, LOCATE_parser, 19663); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[9] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*pexprnode2*/)( variable[9] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[8] /*listnode3*/)( variable[8] /*listnode3*/,  variable[9] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[8] /*listnode3*/) /*new ABlockExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1110: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction539___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19673, LOCATE_parser___ReduceAction539___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction539].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1111: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction539].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction540___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19677, LOCATE_parser___ReduceAction540___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction540___action, LOCATE_parser, 19687); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction540___action, LOCATE_parser, 19689); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[10] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*pexprnode2*/)( variable[10] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[10] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode3*/)( variable[11] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode4*/)( variable[9] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[9] =  variable[11] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  variable[11] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[9] /*listnode4*/) /*new ABlockExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1112: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction540___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19706, LOCATE_parser___ReduceAction540___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction540].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1113: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction540].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction541___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19710, LOCATE_parser___ReduceAction541___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[6] /*listnode2*/) /*new ABlockExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1114: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction541___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19722, LOCATE_parser___ReduceAction541___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction541].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1115: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction541].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction542___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19726, LOCATE_parser___ReduceAction542___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr( variable[5] /*listnode2*/) /*new ABlockExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1116: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction542___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19737, LOCATE_parser___ReduceAction542___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction542].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1117: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction542].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction543___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19741, LOCATE_parser___ReduceAction543___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction543___action, LOCATE_parser, 19746); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1118: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction543___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19750, LOCATE_parser___ReduceAction543___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction543].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1119: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction543].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction544___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19754, LOCATE_parser___ReduceAction544___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction544___action, LOCATE_parser, 19759); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1120: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction544___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19763, LOCATE_parser___ReduceAction544___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction544].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1121: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction544].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction545___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19767, LOCATE_parser___ReduceAction545___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction545___action, LOCATE_parser, 19772); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[5] /*tkwreturnnode2*/,  NIT_NULL /*null*/) /*new AReturnExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1122: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction545___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19780, LOCATE_parser___ReduceAction545___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction545].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1123: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction545].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction546___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19784, LOCATE_parser___ReduceAction546___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction546___action, LOCATE_parser, 19790); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction546___action, LOCATE_parser, 19792); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr( variable[6] /*tkwreturnnode2*/,  variable[7] /*pexprnode3*/) /*new AReturnExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1124: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction546___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19800, LOCATE_parser___ReduceAction546___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction546].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1125: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction546].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction547___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19804, LOCATE_parser___ReduceAction547___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction547___action, LOCATE_parser, 19809); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[5] /*tkwbreaknode2*/,  NIT_NULL /*null*/) /*new ABreakExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1126: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction547___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19817, LOCATE_parser___ReduceAction547___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction547].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1127: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction547].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction548___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19821, LOCATE_parser___ReduceAction548___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction548___action, LOCATE_parser, 19827); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction548___action, LOCATE_parser, 19829); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr( variable[6] /*tkwbreaknode2*/,  variable[7] /*pexprnode3*/) /*new ABreakExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1128: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction548___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19837, LOCATE_parser___ReduceAction548___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction548].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1129: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction548].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction549___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19841, LOCATE_parser___ReduceAction549___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction549___action, LOCATE_parser, 19846); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr( variable[5] /*tkwabortnode2*/) /*new AAbortExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1130: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction549___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19853, LOCATE_parser___ReduceAction549___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction549].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1131: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction549].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction550___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19857, LOCATE_parser___ReduceAction550___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction550___action, LOCATE_parser, 19862); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[5] /*tkwcontinuenode2*/,  NIT_NULL /*null*/) /*new AContinueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1132: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction550___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19870, LOCATE_parser___ReduceAction550___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction550].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1133: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction550].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction551___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19874, LOCATE_parser___ReduceAction551___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction551___action, LOCATE_parser, 19880); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction551___action, LOCATE_parser, 19882); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr( variable[6] /*tkwcontinuenode2*/,  variable[7] /*pexprnode3*/) /*new AContinueExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1134: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction551___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19890, LOCATE_parser___ReduceAction551___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction551].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1135: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction551].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction552___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19894, LOCATE_parser___ReduceAction552___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction552___action, LOCATE_parser, 19899); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1136: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction552___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19903, LOCATE_parser___ReduceAction552___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction552].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1137: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction552].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction553___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19907, LOCATE_parser___ReduceAction553___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction553___action, LOCATE_parser, 19912); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1138: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction553___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19916, LOCATE_parser___ReduceAction553___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction553].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1139: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction553].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction554___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19920, LOCATE_parser___ReduceAction554___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction554___action, LOCATE_parser, 19925); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1140: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction554___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19929, LOCATE_parser___ReduceAction554___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction554].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1141: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction554].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction555___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19933, LOCATE_parser___ReduceAction555___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction555___action, LOCATE_parser, 19938); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1142: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction555___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19942, LOCATE_parser___ReduceAction555___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction555].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1143: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction555].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction556___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19946, LOCATE_parser___ReduceAction556___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction556___action, LOCATE_parser, 19951); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1144: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction556___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19955, LOCATE_parser___ReduceAction556___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction556].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1145: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction556].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction557___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19959, LOCATE_parser___ReduceAction557___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction557___action, LOCATE_parser, 19970); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction557___action, LOCATE_parser, 19972); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction557___action, LOCATE_parser, 19974); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/) /*new ACallExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1146: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction557___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 19991, LOCATE_parser___ReduceAction557___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction557].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1147: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction557].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction558___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 19995, LOCATE_parser___ReduceAction558___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction558___action, LOCATE_parser, 20005); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction558___action, LOCATE_parser, 20007); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/) /*new ACallExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1148: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction558___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20024, LOCATE_parser___ReduceAction558___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction558].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1149: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction558].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction559___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20028, LOCATE_parser___ReduceAction559___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction559___action, LOCATE_parser, 20040); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction559___action, LOCATE_parser, 20042); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction559___action, LOCATE_parser, 20044); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction559___action, LOCATE_parser, 20053); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1150: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction559___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20070, LOCATE_parser___ReduceAction559___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction559].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1151: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction559].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction560___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20074, LOCATE_parser___ReduceAction560___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction560___action, LOCATE_parser, 20085); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction560___action, LOCATE_parser, 20087); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction560___action, LOCATE_parser, 20096); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1152: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction560___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20113, LOCATE_parser___ReduceAction560___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction560].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1153: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction560].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction561___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20117, LOCATE_parser___ReduceAction561___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction561___action, LOCATE_parser, 20124); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction561___action, LOCATE_parser, 20126); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1154: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction561___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20142, LOCATE_parser___ReduceAction561___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction561].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1155: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction561].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction562___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20146, LOCATE_parser___ReduceAction562___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction562___action, LOCATE_parser, 20154); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction562___action, LOCATE_parser, 20156); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction562___action, LOCATE_parser, 20158); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1156: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction562___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20174, LOCATE_parser___ReduceAction562___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction562].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1157: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction562].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction563___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20178, LOCATE_parser___ReduceAction563___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction563___action, LOCATE_parser, 20188); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction563___action, LOCATE_parser, 20190); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction563___action, LOCATE_parser, 20192); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/) /*new AInitExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1158: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction563___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20208, LOCATE_parser___ReduceAction563___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction563].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1159: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction563].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction564___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20212, LOCATE_parser___ReduceAction564___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction564___action, LOCATE_parser, 20221); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction564___action, LOCATE_parser, 20223); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/) /*new AInitExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1160: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction564___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20239, LOCATE_parser___ReduceAction564___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction564].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1161: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction564].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction565___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20243, LOCATE_parser___ReduceAction565___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction565___action, LOCATE_parser, 20249); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredefnode1*/)( variable[6] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1162: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction565___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20256, LOCATE_parser___ReduceAction565___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction565].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1163: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction565].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction566___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20260, LOCATE_parser___ReduceAction566___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pclosuredefnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pclosuredefnode1*/, COLOR_PClosureDef, ID_PClosureDef)) /*cast PClosureDef*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction566___action, LOCATE_parser, 20267); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction566___action, LOCATE_parser, 20269); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*pclosuredefnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pclosuredefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pclosuredefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pclosuredefnode1*/)( variable[7] /*pclosuredefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*pclosuredefnode1*/) /*AbstractArray::add*/;
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1164: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction566___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20283, LOCATE_parser___ReduceAction566___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction566].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1165: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction566].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction567___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20287, LOCATE_parser___ReduceAction567___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction567___action, LOCATE_parser, 20295); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction567___action, LOCATE_parser, 20297); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction567___action, LOCATE_parser, 20299); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[8] /*tkwwithnode2*/,  variable[7] /*listnode3*/,  variable[9] /*tkwdonode4*/,  variable[10] /*pexprnode5*/) /*new AClosureDef*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1166: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction567___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20309, LOCATE_parser___ReduceAction567___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction567].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1167: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction567].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction568___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20313, LOCATE_parser___ReduceAction568___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwwithnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwwithnode2*/, COLOR_TKwwith, ID_TKwwith)) /*cast TKwwith*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 20322); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 20324); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 20333); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 20335); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef( variable[9] /*tkwwithnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tkwdonode5*/,  variable[12] /*pexprnode6*/) /*new AClosureDef*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pclosuredefnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1168: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction568___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20345, LOCATE_parser___ReduceAction568___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction568].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1169: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction568].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction569___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20349, LOCATE_parser___ReduceAction569___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction569___action, LOCATE_parser, 20355); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction569___action, LOCATE_parser, 20357); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[6] /*tkwvarnode2*/,  variable[7] /*tidnode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AVardeclExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1170: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction569___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20368, LOCATE_parser___ReduceAction569___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction569].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1171: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction569].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction570___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20372, LOCATE_parser___ReduceAction570___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 20379); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 20381); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 20383); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[7] /*tkwvarnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*ptypenode4*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new AVardeclExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1172: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction570___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20394, LOCATE_parser___ReduceAction570___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction570].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1173: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction570].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction571___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20398, LOCATE_parser___ReduceAction571___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 20407); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 20409); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 20411); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 20413); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[9] /*tkwvarnode2*/,  variable[10] /*tidnode3*/,  NIT_NULL /*null*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/) /*new AVardeclExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1174: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction571___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20424, LOCATE_parser___ReduceAction571___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction571].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1175: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction571].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction572___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20428, LOCATE_parser___ReduceAction572___action};
-  val_t variable[17];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 20438); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 20440); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[12] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 20442); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 20444); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 20446); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr( variable[10] /*tkwvarnode2*/,  variable[11] /*tidnode3*/,  variable[12] /*ptypenode4*/,  variable[13] /*tassignnode5*/,  variable[14] /*pexprnode6*/) /*new AVardeclExpr*/;
-  variable[15] = variable[16];
-  variable[3] =  variable[15] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[16],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1176: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction572___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20457, LOCATE_parser___ReduceAction572___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction572].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1177: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction572].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction573___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20461, LOCATE_parser___ReduceAction573___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction573___action, LOCATE_parser, 20471); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction573___action, LOCATE_parser, 20473); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction573___action, LOCATE_parser, 20475); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction573___action, LOCATE_parser, 20477); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*tassignnode4*/,  variable[13] /*pexprnode5*/) /*new AAttrAssignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1178: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction573___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20487, LOCATE_parser___ReduceAction573___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction573].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1179: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction573].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction574___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20491, LOCATE_parser___ReduceAction574___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction574___action, LOCATE_parser, 20500); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction574___action, LOCATE_parser, 20502); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction574___action, LOCATE_parser, 20504); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*tassignnode4*/,  variable[10] /*pexprnode5*/) /*new AAttrAssignExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1180: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction574___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20514, LOCATE_parser___ReduceAction574___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction574].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1181: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction574].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction575___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20518, LOCATE_parser___ReduceAction575___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction575___action, LOCATE_parser, 20530); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction575___action, LOCATE_parser, 20532); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction575___action, LOCATE_parser, 20534); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction575___action, LOCATE_parser, 20543); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction575___action, LOCATE_parser, 20545); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*tassignnode6*/,  variable[16] /*pexprnode7*/) /*new ACallAssignExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1182: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction575___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20556, LOCATE_parser___ReduceAction575___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction575].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1183: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction575].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction576___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20560, LOCATE_parser___ReduceAction576___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction576___action, LOCATE_parser, 20571); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction576___action, LOCATE_parser, 20573); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction576___action, LOCATE_parser, 20582); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction576___action, LOCATE_parser, 20584); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*tassignnode6*/,  variable[13] /*pexprnode7*/) /*new ACallAssignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1184: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction576___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20595, LOCATE_parser___ReduceAction576___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction576].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1185: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction576].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction577___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20599, LOCATE_parser___ReduceAction577___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction577___action, LOCATE_parser, 20608); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction577___action, LOCATE_parser, 20610); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction577___action, LOCATE_parser, 20619); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction577___action, LOCATE_parser, 20621); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*tassignnode5*/,  variable[12] /*pexprnode6*/) /*new ABraAssignExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1186: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction577___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20631, LOCATE_parser___ReduceAction577___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction577].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1187: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction577].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction578___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20635, LOCATE_parser___ReduceAction578___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction578___action, LOCATE_parser, 20645); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction578___action, LOCATE_parser, 20647); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction578___action, LOCATE_parser, 20649); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction578___action, LOCATE_parser, 20651); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[10] /*pexprnode2*/,  variable[11] /*tattridnode3*/,  variable[12] /*passignopnode4*/,  variable[13] /*pexprnode5*/) /*new AAttrReassignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1188: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction578___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20661, LOCATE_parser___ReduceAction578___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction578].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1189: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction578].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction579___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20665, LOCATE_parser___ReduceAction579___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction579___action, LOCATE_parser, 20674); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction579___action, LOCATE_parser, 20676); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction579___action, LOCATE_parser, 20678); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable[7] /*pexprnode2*/,  variable[8] /*tattridnode3*/,  variable[9] /*passignopnode4*/,  variable[10] /*pexprnode5*/) /*new AAttrReassignExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1190: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction579___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20688, LOCATE_parser___ReduceAction579___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction579].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1191: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction579].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction580___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20692, LOCATE_parser___ReduceAction580___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction580___action, LOCATE_parser, 20704); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[7] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction580___action, LOCATE_parser, 20706); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction580___action, LOCATE_parser, 20708); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode5*/)( variable[11] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[11] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction580___action, LOCATE_parser, 20717); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction580___action, LOCATE_parser, 20719); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[11] /*listnode5*/,  variable[15] /*passignopnode6*/,  variable[16] /*pexprnode7*/) /*new ACallReassignExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1192: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction580___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20730, LOCATE_parser___ReduceAction580___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction580].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1193: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction580].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction581___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20734, LOCATE_parser___ReduceAction581___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction581___action, LOCATE_parser, 20745); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction581___action, LOCATE_parser, 20747); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode5*/)( variable[8] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode5*/)( variable[8] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction581___action, LOCATE_parser, 20756); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction581___action, LOCATE_parser, 20758); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[8] /*listnode5*/,  variable[12] /*passignopnode6*/,  variable[13] /*pexprnode7*/) /*new ACallReassignExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1194: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction581___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20769, LOCATE_parser___ReduceAction581___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction581].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1195: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction581].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction582___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20773, LOCATE_parser___ReduceAction582___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction582___action, LOCATE_parser, 20782); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction582___action, LOCATE_parser, 20784); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode4*/)( variable[8] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[8] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*passignopnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*passignopnode5*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction582___action, LOCATE_parser, 20793); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction582___action, LOCATE_parser, 20795); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr( variable[9] /*pexprnode2*/,  variable[8] /*listnode4*/,  variable[11] /*passignopnode5*/,  variable[12] /*pexprnode6*/) /*new ABraReassignExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1196: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction582___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20805, LOCATE_parser___ReduceAction582___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction582].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1197: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction582].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction583___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20809, LOCATE_parser___ReduceAction583___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction583___action, LOCATE_parser, 20815); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction583___action, LOCATE_parser, 20817); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr( variable[6] /*tkwdonode2*/,  variable[7] /*pexprnode3*/) /*new ADoExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1198: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction583___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20825, LOCATE_parser___ReduceAction583___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction583].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1199: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction583].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction584___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20829, LOCATE_parser___ReduceAction584___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[11] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction584___action, LOCATE_parser, 20841); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[9] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction584___action, LOCATE_parser, 20843); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[6] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction584___action, LOCATE_parser, 20845); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist8*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction584___action, LOCATE_parser, 20847); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr( variable[12] /*tkwifnode2*/,  variable[13] /*pexprnode3*/,  variable[14] /*pexprnode4*/,  variable[15] /*pexprnode5*/) /*new AIfExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1200: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction584___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20857, LOCATE_parser___ReduceAction584___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction584].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1201: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction584].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction585___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20861, LOCATE_parser___ReduceAction585___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable[10] /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction585___action, LOCATE_parser, 20871); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[7] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction585___action, LOCATE_parser, 20873); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction585___action, LOCATE_parser, 20875); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[13] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction585___action, LOCATE_parser, 20877); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr( variable[10] /*tkwwhilenode2*/,  variable[11] /*pexprnode3*/,  variable[12] /*tkwdonode4*/,  variable[13] /*pexprnode5*/) /*new AWhileExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(91)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1202: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction585___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20887, LOCATE_parser___ReduceAction585___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction585].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1203: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction585].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction586___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20891, LOCATE_parser___ReduceAction586___action};
-  val_t variable[21];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tkwfornode2*/==NIT_NULL) || VAL_ISA( variable[14] /*tkwfornode2*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction586___action, LOCATE_parser, 20905); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[11] /*nodearraylist3*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction586___action, LOCATE_parser, 20907); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[7] /*nodearraylist7*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction586___action, LOCATE_parser, 20909); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[5] /*nodearraylist9*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwdonode5*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwdonode5*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction586___action, LOCATE_parser, 20911); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[4] /*nodearraylist10*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction586___action, LOCATE_parser, 20913); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  /* Register variable[20]: Result */
-  variable[20] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr( variable[14] /*tkwfornode2*/,  variable[15] /*tidnode3*/,  variable[16] /*pexprnode4*/,  variable[17] /*tkwdonode5*/,  variable[18] /*pexprnode6*/) /*new AForExpr*/;
-  variable[19] = variable[20];
-  variable[3] =  variable[19] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[20]: Result */
-  variable[20] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[20],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1204: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction586___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20924, LOCATE_parser___ReduceAction586___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction586].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1205: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction586].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction587___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20928, LOCATE_parser___ReduceAction587___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction587___action, LOCATE_parser, 20934); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction587___action, LOCATE_parser, 20936); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[6] /*tkwassertnode2*/,  NIT_NULL /*null*/,  variable[7] /*pexprnode4*/) /*new AAssertExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1206: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction587___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20945, LOCATE_parser___ReduceAction587___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction587].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1207: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction587].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction588___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20949, LOCATE_parser___ReduceAction588___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction588___action, LOCATE_parser, 20956); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction588___action, LOCATE_parser, 20958); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction588___action, LOCATE_parser, 20960); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr( variable[7] /*tkwassertnode2*/,  variable[8] /*tidnode3*/,  variable[9] /*pexprnode4*/) /*new AAssertExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1208: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction588___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20969, LOCATE_parser___ReduceAction588___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction588].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1209: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction588].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction589___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20973, LOCATE_parser___ReduceAction589___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction589___action, LOCATE_parser, 20978); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1210: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction589___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 20982, LOCATE_parser___ReduceAction589___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction589].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1211: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction589].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction590___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 20986, LOCATE_parser___ReduceAction590___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction590___action, LOCATE_parser, 20998); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction590___action, LOCATE_parser, 21000); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction590___action, LOCATE_parser, 21002); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction590___action, LOCATE_parser, 21011); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1212: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction590___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21028, LOCATE_parser___ReduceAction590___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction590].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1213: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction590].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction591___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21032, LOCATE_parser___ReduceAction591___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction591___action, LOCATE_parser, 21043); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction591___action, LOCATE_parser, 21045); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction591___action, LOCATE_parser, 21054); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1214: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction591___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21071, LOCATE_parser___ReduceAction591___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction591].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1215: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction591].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction592___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21075, LOCATE_parser___ReduceAction592___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction592___action, LOCATE_parser, 21084); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction592___action, LOCATE_parser, 21086); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode3*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode3*/)( variable[10] /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode4*/)( variable[7] /*listnode4*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode3*/ /*listnode4=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode4*/)( variable[7] /*listnode4*/,  variable[10] /*listnode3*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction592___action, LOCATE_parser, 21095); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr( variable[9] /*pexprnode2*/,  variable[7] /*listnode4*/,  variable[8] /*listnode6*/) /*new ABraExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1216: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction592___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21111, LOCATE_parser___ReduceAction592___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction592].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1217: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction592].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction593___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21115, LOCATE_parser___ReduceAction593___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction593___action, LOCATE_parser, 21120); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1218: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction593___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21124, LOCATE_parser___ReduceAction593___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction593].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1219: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction593].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction594___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21128, LOCATE_parser___ReduceAction594___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction594___action, LOCATE_parser, 21140); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction594___action, LOCATE_parser, 21142); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction594___action, LOCATE_parser, 21144); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction594___action, LOCATE_parser, 21153); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1220: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction594___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21170, LOCATE_parser___ReduceAction594___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction594].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1221: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction594].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction595___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21174, LOCATE_parser___ReduceAction595___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction595___action, LOCATE_parser, 21185); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction595___action, LOCATE_parser, 21187); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction595___action, LOCATE_parser, 21196); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1222: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction595___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21213, LOCATE_parser___ReduceAction595___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction595].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1223: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction595].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction596___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21217, LOCATE_parser___ReduceAction596___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction596___action, LOCATE_parser, 21222); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1224: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction596___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21226, LOCATE_parser___ReduceAction596___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction596].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1225: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction596].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction597___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21230, LOCATE_parser___ReduceAction597___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction597___action, LOCATE_parser, 21242); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction597___action, LOCATE_parser, 21244); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction597___action, LOCATE_parser, 21246); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction597___action, LOCATE_parser, 21255); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1226: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction597___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21272, LOCATE_parser___ReduceAction597___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction597].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1227: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction597].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction598___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21276, LOCATE_parser___ReduceAction598___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction598___action, LOCATE_parser, 21287); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction598___action, LOCATE_parser, 21289); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction598___action, LOCATE_parser, 21298); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1228: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction598___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21315, LOCATE_parser___ReduceAction598___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction598].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1229: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction598].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction599___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21319, LOCATE_parser___ReduceAction599___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction599___action, LOCATE_parser, 21324); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1230: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction599___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21328, LOCATE_parser___ReduceAction599___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction599].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1231: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction599].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction600___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21332, LOCATE_parser___ReduceAction600___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21347); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21349); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21351); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21353); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21355); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction600___action, LOCATE_parser, 21357); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/) /*new AIfexprExpr*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1232: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction600___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21369, LOCATE_parser___ReduceAction600___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction600].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1233: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction600].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction601___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21373, LOCATE_parser___ReduceAction601___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction601___action, LOCATE_parser, 21378); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1234: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction601___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21382, LOCATE_parser___ReduceAction601___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction601].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1235: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction601].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction602___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21386, LOCATE_parser___ReduceAction602___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction602___action, LOCATE_parser, 21394); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction602___action, LOCATE_parser, 21396); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AOrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1236: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction602___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21404, LOCATE_parser___ReduceAction602___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction602].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1237: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction602].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction603___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21408, LOCATE_parser___ReduceAction603___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction603___action, LOCATE_parser, 21416); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction603___action, LOCATE_parser, 21418); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AAndExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1238: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction603___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21426, LOCATE_parser___ReduceAction603___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction603].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1239: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction603].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction604___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21430, LOCATE_parser___ReduceAction604___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction604___action, LOCATE_parser, 21435); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1240: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction604___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21439, LOCATE_parser___ReduceAction604___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction604].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1241: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction604].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction605___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21443, LOCATE_parser___ReduceAction605___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction605___action, LOCATE_parser, 21450); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction605___action, LOCATE_parser, 21452); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/) /*new ANotExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1242: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction605___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21460, LOCATE_parser___ReduceAction605___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction605].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1243: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction605].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction606___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21464, LOCATE_parser___ReduceAction606___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction606___action, LOCATE_parser, 21469); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1244: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction606___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21473, LOCATE_parser___ReduceAction606___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction606].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1245: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction606].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction607___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21477, LOCATE_parser___ReduceAction607___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction607___action, LOCATE_parser, 21485); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction607___action, LOCATE_parser, 21487); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEqExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1246: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction607___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21495, LOCATE_parser___ReduceAction607___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction607].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1247: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction607].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction608___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21499, LOCATE_parser___ReduceAction608___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction608___action, LOCATE_parser, 21507); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction608___action, LOCATE_parser, 21509); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1248: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction608___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21517, LOCATE_parser___ReduceAction608___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction608].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1249: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction608].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction609___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21521, LOCATE_parser___ReduceAction609___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction609___action, LOCATE_parser, 21529); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction609___action, LOCATE_parser, 21531); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ANeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1250: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction609___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21539, LOCATE_parser___ReduceAction609___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction609].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1251: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction609].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction610___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21543, LOCATE_parser___ReduceAction610___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction610___action, LOCATE_parser, 21551); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction610___action, LOCATE_parser, 21553); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1252: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction610___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21561, LOCATE_parser___ReduceAction610___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction610].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1253: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction610].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction611___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21565, LOCATE_parser___ReduceAction611___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction611___action, LOCATE_parser, 21573); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction611___action, LOCATE_parser, 21575); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1254: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction611___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21583, LOCATE_parser___ReduceAction611___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction611].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1255: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction611].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction612___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21587, LOCATE_parser___ReduceAction612___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction612___action, LOCATE_parser, 21595); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction612___action, LOCATE_parser, 21597); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1256: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction612___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21605, LOCATE_parser___ReduceAction612___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction612].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1257: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction612].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction613___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21609, LOCATE_parser___ReduceAction613___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction613___action, LOCATE_parser, 21617); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction613___action, LOCATE_parser, 21619); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1258: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction613___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21627, LOCATE_parser___ReduceAction613___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction613].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1259: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction613].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction614___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21631, LOCATE_parser___ReduceAction614___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction614___action, LOCATE_parser, 21639); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction614___action, LOCATE_parser, 21641); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarshipExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1260: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction614___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21649, LOCATE_parser___ReduceAction614___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction614].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1261: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction614].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction615___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21653, LOCATE_parser___ReduceAction615___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction615___action, LOCATE_parser, 21661); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction615___action, LOCATE_parser, 21663); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/) /*new AIsaExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1262: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction615___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21671, LOCATE_parser___ReduceAction615___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction615].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1263: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction615].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction616___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21675, LOCATE_parser___ReduceAction616___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction616___action, LOCATE_parser, 21680); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1264: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction616___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21684, LOCATE_parser___ReduceAction616___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction616].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1265: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction616].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction617___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21688, LOCATE_parser___ReduceAction617___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction617___action, LOCATE_parser, 21696); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction617___action, LOCATE_parser, 21698); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APlusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1266: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction617___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21706, LOCATE_parser___ReduceAction617___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction617].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1267: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction617].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction618___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21710, LOCATE_parser___ReduceAction618___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction618___action, LOCATE_parser, 21718); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction618___action, LOCATE_parser, 21720); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AMinusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1268: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction618___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21728, LOCATE_parser___ReduceAction618___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction618].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1269: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction618].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction619___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21732, LOCATE_parser___ReduceAction619___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction619___action, LOCATE_parser, 21737); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1270: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction619___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21741, LOCATE_parser___ReduceAction619___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction619].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1271: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction619].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction620___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21745, LOCATE_parser___ReduceAction620___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction620___action, LOCATE_parser, 21753); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction620___action, LOCATE_parser, 21755); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1272: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction620___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21763, LOCATE_parser___ReduceAction620___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction620].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1273: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction620].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction621___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21767, LOCATE_parser___ReduceAction621___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction621___action, LOCATE_parser, 21775); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction621___action, LOCATE_parser, 21777); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ASlashExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1274: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction621___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21785, LOCATE_parser___ReduceAction621___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction621].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1275: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction621].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction622___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21789, LOCATE_parser___ReduceAction622___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction622___action, LOCATE_parser, 21797); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction622___action, LOCATE_parser, 21799); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APercentExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1276: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction622___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21807, LOCATE_parser___ReduceAction622___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction622].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1277: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction622].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction623___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21811, LOCATE_parser___ReduceAction623___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction623___action, LOCATE_parser, 21816); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1278: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction623___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21820, LOCATE_parser___ReduceAction623___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction623].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1279: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction623].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction624___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21824, LOCATE_parser___ReduceAction624___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction624___action, LOCATE_parser, 21831); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction624___action, LOCATE_parser, 21833); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/) /*new AUminusExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1280: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction624___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21841, LOCATE_parser___ReduceAction624___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction624].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1281: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction624].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction625___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21845, LOCATE_parser___ReduceAction625___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction625___action, LOCATE_parser, 21852); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction625___action, LOCATE_parser, 21854); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/) /*new AOnceExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1282: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction625___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21862, LOCATE_parser___ReduceAction625___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction625].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1283: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction625].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction626___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21866, LOCATE_parser___ReduceAction626___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction626___action, LOCATE_parser, 21871); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1284: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction626___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21875, LOCATE_parser___ReduceAction626___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction626].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1285: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction626].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction627___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21879, LOCATE_parser___ReduceAction627___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction627___action, LOCATE_parser, 21888); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction627___action, LOCATE_parser, 21890); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction627___action, LOCATE_parser, 21892); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/) /*new ANewExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1286: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction627___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21909, LOCATE_parser___ReduceAction627___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction627].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1287: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction627].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction628___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21913, LOCATE_parser___ReduceAction628___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction628___action, LOCATE_parser, 21922); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[7] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction628___action, LOCATE_parser, 21924); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction628___action, LOCATE_parser, 21926); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[9] /*tkwissetnode2*/,  variable[10] /*pexprnode3*/,  variable[11] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1288: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction628___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21935, LOCATE_parser___ReduceAction628___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction628].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1289: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction628].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction629___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21939, LOCATE_parser___ReduceAction629___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction629___action, LOCATE_parser, 21945); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction629___action, LOCATE_parser, 21949); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[6] /*tkwissetnode2*/,  variable[7] /*pexprnode3*/,  variable[8] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1290: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction629___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21958, LOCATE_parser___ReduceAction629___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction629].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1291: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction629].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction630___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21962, LOCATE_parser___ReduceAction630___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction630___action, LOCATE_parser, 21970); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction630___action, LOCATE_parser, 21972); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[8] /*pexprnode2*/,  variable[9] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1292: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction630___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21980, LOCATE_parser___ReduceAction630___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction630].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1293: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction630].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction631___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 21984, LOCATE_parser___ReduceAction631___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[6] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction631___action, LOCATE_parser, 21991); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[5] /*pexprnode2*/,  variable[6] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[7] = variable[8];
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1294: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction631___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 21999, LOCATE_parser___ReduceAction631___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction631].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1295: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction631].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction632___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22003, LOCATE_parser___ReduceAction632___action};
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[11] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction632___action, LOCATE_parser, 22014); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[12] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction632___action, LOCATE_parser, 22016); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[13] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction632___action, LOCATE_parser, 22018); nit_exit(1);}
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[13] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[13] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[13] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[13] /*listnode4*/)( variable[13] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[14])) { /*if*/
-    /* Register variable[14]: Result */
-    variable[14] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[14])) { /*if*/
-      variable[9] =  variable[13] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[13] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[11] /*pexprnode2*/,  variable[12] /*tidnode3*/,  variable[9] /*listnode5*/,  variable[10] /*listnode6*/) /*new ACallExpr*/;
-  variable[14] = variable[15];
-  variable[3] =  variable[14] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[15],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1296: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction632___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22035, LOCATE_parser___ReduceAction632___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction632].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1297: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction632].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction633___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22039, LOCATE_parser___ReduceAction633___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction633___action, LOCATE_parser, 22049); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction633___action, LOCATE_parser, 22051); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[6] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[8] /*pexprnode2*/,  variable[9] /*tidnode3*/,  variable[6] /*listnode5*/,  variable[7] /*listnode6*/) /*new ACallExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1298: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction633___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22068, LOCATE_parser___ReduceAction633___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction633].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1299: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction633].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction634___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22072, LOCATE_parser___ReduceAction634___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction634___action, LOCATE_parser, 22079); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction634___action, LOCATE_parser, 22081); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1300: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction634___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22097, LOCATE_parser___ReduceAction634___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction634].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1301: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction634].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction635___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22101, LOCATE_parser___ReduceAction635___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction635___action, LOCATE_parser, 22109); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction635___action, LOCATE_parser, 22111); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction635___action, LOCATE_parser, 22113); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1302: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction635___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22129, LOCATE_parser___ReduceAction635___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction635].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1303: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction635].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction636___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22133, LOCATE_parser___ReduceAction636___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[8] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[10] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction636___action, LOCATE_parser, 22143); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[11] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction636___action, LOCATE_parser, 22145); nit_exit(1);}
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist5*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction636___action, LOCATE_parser, 22147); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode4*/)( variable[12] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[9] /*listnode5*/)( variable[9] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[9] =  variable[12] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[9] /*listnode5*/)( variable[9] /*listnode5*/,  variable[12] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[10] /*pexprnode2*/,  variable[11] /*tkwinitnode3*/,  variable[9] /*listnode5*/) /*new AInitExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1304: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction636___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22163, LOCATE_parser___ReduceAction636___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction636].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1305: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction636].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction637___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22167, LOCATE_parser___ReduceAction637___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction637___action, LOCATE_parser, 22176); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction637___action, LOCATE_parser, 22178); nit_exit(1);}
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[9] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*listnode4*/)( variable[9] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[10])) { /*if*/
-    /* Register variable[10]: Result */
-    variable[10] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[10])) { /*if*/
-      variable[6] =  variable[9] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[9] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[7] /*pexprnode2*/,  variable[8] /*tkwinitnode3*/,  variable[6] /*listnode5*/) /*new AInitExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1306: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction637___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22194, LOCATE_parser___ReduceAction637___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction637].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1307: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction637].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction638___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22198, LOCATE_parser___ReduceAction638___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction638___action, LOCATE_parser, 22210); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction638___action, LOCATE_parser, 22212); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction638___action, LOCATE_parser, 22214); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction638___action, LOCATE_parser, 22216); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/) /*new ANewExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1308: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction638___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22233, LOCATE_parser___ReduceAction638___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction638].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1309: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction638].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction639___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22237, LOCATE_parser___ReduceAction639___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction639___action, LOCATE_parser, 22242); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/) /*new ASelfExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1310: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction639___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22249, LOCATE_parser___ReduceAction639___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction639].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1311: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction639].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction640___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22253, LOCATE_parser___ReduceAction640___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction640___action, LOCATE_parser, 22258); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/) /*new ATrueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1312: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction640___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22265, LOCATE_parser___ReduceAction640___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction640].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1313: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction640].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction641___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22269, LOCATE_parser___ReduceAction641___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction641___action, LOCATE_parser, 22274); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/) /*new AFalseExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1314: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction641___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22281, LOCATE_parser___ReduceAction641___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction641].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1315: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction641].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction642___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22285, LOCATE_parser___ReduceAction642___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction642___action, LOCATE_parser, 22290); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/) /*new ANullExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1316: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction642___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22297, LOCATE_parser___ReduceAction642___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction642].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1317: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction642].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction643___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22301, LOCATE_parser___ReduceAction643___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction643___action, LOCATE_parser, 22306); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/) /*new AIntExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1318: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction643___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22313, LOCATE_parser___ReduceAction643___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction643].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1319: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction643].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction644___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22317, LOCATE_parser___ReduceAction644___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction644___action, LOCATE_parser, 22322); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/) /*new AFloatExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1320: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction644___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22329, LOCATE_parser___ReduceAction644___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction644].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1321: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction644].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction645___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22333, LOCATE_parser___ReduceAction645___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction645___action, LOCATE_parser, 22338); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/) /*new ACharExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1322: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction645___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22345, LOCATE_parser___ReduceAction645___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction645].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1323: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction645].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction646___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22349, LOCATE_parser___ReduceAction646___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction646___action, LOCATE_parser, 22354); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/) /*new AStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1324: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction646___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22361, LOCATE_parser___ReduceAction646___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction646].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1325: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction646].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction647___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22365, LOCATE_parser___ReduceAction647___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction647___action, LOCATE_parser, 22370); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1326: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction647___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22374, LOCATE_parser___ReduceAction647___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction647].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1327: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction647].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction648___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22378, LOCATE_parser___ReduceAction648___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction648___action, LOCATE_parser, 22392); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction648___action, LOCATE_parser, 22394); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction648___action, LOCATE_parser, 22396); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/) /*new AAsCastExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1328: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction648___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22405, LOCATE_parser___ReduceAction648___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction648].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1329: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction648].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction649___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22409, LOCATE_parser___ReduceAction649___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction649___action, LOCATE_parser, 22425); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction649___action, LOCATE_parser, 22427); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwnotnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwnotnode4*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction649___action, LOCATE_parser, 22429); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwnullnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwnullnode5*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction649___action, LOCATE_parser, 22431); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr( variable[16] /*pexprnode2*/,  variable[17] /*tkwasnode3*/,  variable[18] /*tkwnotnode4*/,  variable[19] /*tkwnullnode5*/) /*new AAsNotnullExpr*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1330: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction649___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22441, LOCATE_parser___ReduceAction649___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction649].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1331: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction649].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction650___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22445, LOCATE_parser___ReduceAction650___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction650___action, LOCATE_parser, 22450); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1332: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction650___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22454, LOCATE_parser___ReduceAction650___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction650].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1333: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction650].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction651___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22458, LOCATE_parser___ReduceAction651___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction651___action, LOCATE_parser, 22470); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction651___action, LOCATE_parser, 22472); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction651___action, LOCATE_parser, 22474); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction651___action, LOCATE_parser, 22483); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1334: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction651___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22500, LOCATE_parser___ReduceAction651___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction651].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1335: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction651].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction652___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22504, LOCATE_parser___ReduceAction652___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction652___action, LOCATE_parser, 22515); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction652___action, LOCATE_parser, 22517); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction652___action, LOCATE_parser, 22526); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1336: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction652___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22543, LOCATE_parser___ReduceAction652___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction652].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1337: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction652].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction653___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22547, LOCATE_parser___ReduceAction653___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction653___action, LOCATE_parser, 22552); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1338: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction653___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22556, LOCATE_parser___ReduceAction653___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction653].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1339: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction653].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction654___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22560, LOCATE_parser___ReduceAction654___action};
-  val_t variable[23];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[14] /*nodearraylist1*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22575); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[12] /*nodearraylist3*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22577); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[10] /*nodearraylist5*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22579); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist7*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable[18] /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22581); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist9*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22583); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  variable[20] =  variable[4] /*nodearraylist11*/;
-  /* Register variable[21]: Result */
-  variable[21] = TAG_Bool(( variable[20] /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable[20] /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction654___action, LOCATE_parser, 22585); nit_exit(1);}
-  /* Register variable[21]: Local variable */
-  /* Register variable[22]: Result */
-  variable[22] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr( variable[15] /*tkwifnode2*/,  variable[16] /*pexprnode3*/,  variable[17] /*tkwthennode4*/,  variable[18] /*pexprnode5*/,  variable[19] /*tkwelsenode6*/,  variable[20] /*pexprnode7*/) /*new AIfexprExpr*/;
-  variable[21] = variable[22];
-  variable[3] =  variable[21] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[22]: Result */
-  variable[22] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[22],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1340: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction654___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22597, LOCATE_parser___ReduceAction654___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction654].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1341: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction654].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction655___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22601, LOCATE_parser___ReduceAction655___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction655___action, LOCATE_parser, 22606); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1342: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction655___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22610, LOCATE_parser___ReduceAction655___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction655].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1343: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction655].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction656___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22614, LOCATE_parser___ReduceAction656___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction656___action, LOCATE_parser, 22622); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction656___action, LOCATE_parser, 22624); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AOrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1344: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction656___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22632, LOCATE_parser___ReduceAction656___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction656].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1345: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction656].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction657___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22636, LOCATE_parser___ReduceAction657___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction657___action, LOCATE_parser, 22644); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction657___action, LOCATE_parser, 22646); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AAndExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1346: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction657___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22654, LOCATE_parser___ReduceAction657___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction657].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1347: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction657].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction658___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22658, LOCATE_parser___ReduceAction658___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction658___action, LOCATE_parser, 22663); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1348: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction658___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22667, LOCATE_parser___ReduceAction658___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction658].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1349: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction658].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction659___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22671, LOCATE_parser___ReduceAction659___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction659___action, LOCATE_parser, 22678); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction659___action, LOCATE_parser, 22680); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr( variable[7] /*tkwnotnode2*/,  variable[8] /*pexprnode3*/) /*new ANotExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1350: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction659___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22688, LOCATE_parser___ReduceAction659___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction659].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1351: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction659].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction660___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22692, LOCATE_parser___ReduceAction660___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction660___action, LOCATE_parser, 22697); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1352: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction660___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22701, LOCATE_parser___ReduceAction660___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction660].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1353: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction660].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction661___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22705, LOCATE_parser___ReduceAction661___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction661___action, LOCATE_parser, 22713); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction661___action, LOCATE_parser, 22715); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEqExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1354: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction661___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22723, LOCATE_parser___ReduceAction661___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction661].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1355: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction661].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction662___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22727, LOCATE_parser___ReduceAction662___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction662___action, LOCATE_parser, 22735); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction662___action, LOCATE_parser, 22737); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AEeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1356: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction662___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22745, LOCATE_parser___ReduceAction662___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction662].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1357: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction662].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction663___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22749, LOCATE_parser___ReduceAction663___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction663___action, LOCATE_parser, 22757); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction663___action, LOCATE_parser, 22759); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ANeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1358: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction663___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22767, LOCATE_parser___ReduceAction663___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction663].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1359: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction663].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction664___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22771, LOCATE_parser___ReduceAction664___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction664___action, LOCATE_parser, 22779); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction664___action, LOCATE_parser, 22781); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1360: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction664___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22789, LOCATE_parser___ReduceAction664___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction664].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1361: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction664].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction665___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22793, LOCATE_parser___ReduceAction665___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction665___action, LOCATE_parser, 22801); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction665___action, LOCATE_parser, 22803); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ALeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1362: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction665___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22811, LOCATE_parser___ReduceAction665___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction665].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1363: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction665].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction666___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22815, LOCATE_parser___ReduceAction666___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction666___action, LOCATE_parser, 22823); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction666___action, LOCATE_parser, 22825); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGtExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1364: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction666___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22833, LOCATE_parser___ReduceAction666___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction666].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1365: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction666].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction667___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22837, LOCATE_parser___ReduceAction667___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction667___action, LOCATE_parser, 22845); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction667___action, LOCATE_parser, 22847); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AGeExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1366: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction667___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22855, LOCATE_parser___ReduceAction667___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction667].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1367: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction667].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction668___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22859, LOCATE_parser___ReduceAction668___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction668___action, LOCATE_parser, 22867); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction668___action, LOCATE_parser, 22869); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarshipExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1368: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction668___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22877, LOCATE_parser___ReduceAction668___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction668].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1369: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction668].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction669___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22881, LOCATE_parser___ReduceAction669___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction669___action, LOCATE_parser, 22889); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[9] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction669___action, LOCATE_parser, 22891); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr( variable[8] /*pexprnode2*/,  variable[9] /*ptypenode3*/) /*new AIsaExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1370: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction669___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22899, LOCATE_parser___ReduceAction669___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction669].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1371: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction669].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction670___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22903, LOCATE_parser___ReduceAction670___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction670___action, LOCATE_parser, 22908); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1372: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction670___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22912, LOCATE_parser___ReduceAction670___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction670].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1373: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction670].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction671___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22916, LOCATE_parser___ReduceAction671___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction671___action, LOCATE_parser, 22924); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction671___action, LOCATE_parser, 22926); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APlusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1374: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction671___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22934, LOCATE_parser___ReduceAction671___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction671].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1375: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction671].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction672___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22938, LOCATE_parser___ReduceAction672___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction672___action, LOCATE_parser, 22946); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction672___action, LOCATE_parser, 22948); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AMinusExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(111)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1376: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction672___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22956, LOCATE_parser___ReduceAction672___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction672].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1377: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction672].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction673___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22960, LOCATE_parser___ReduceAction673___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction673___action, LOCATE_parser, 22965); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1378: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction673___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22969, LOCATE_parser___ReduceAction673___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction673].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1379: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction673].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction674___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22973, LOCATE_parser___ReduceAction674___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction674___action, LOCATE_parser, 22981); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction674___action, LOCATE_parser, 22983); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new AStarExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1380: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction674___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 22991, LOCATE_parser___ReduceAction674___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction674].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1381: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction674].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction675___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 22995, LOCATE_parser___ReduceAction675___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction675___action, LOCATE_parser, 23003); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction675___action, LOCATE_parser, 23005); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new ASlashExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1382: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction675___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23013, LOCATE_parser___ReduceAction675___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction675].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1383: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction675].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction676___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23017, LOCATE_parser___ReduceAction676___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction676___action, LOCATE_parser, 23025); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction676___action, LOCATE_parser, 23027); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr( variable[8] /*pexprnode2*/,  variable[9] /*pexprnode3*/) /*new APercentExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1384: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction676___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23035, LOCATE_parser___ReduceAction676___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction676].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1385: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction676].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction677___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23039, LOCATE_parser___ReduceAction677___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction677___action, LOCATE_parser, 23044); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1386: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction677___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23048, LOCATE_parser___ReduceAction677___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction677].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1387: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction677].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction678___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23052, LOCATE_parser___ReduceAction678___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction678___action, LOCATE_parser, 23059); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction678___action, LOCATE_parser, 23061); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr( variable[7] /*tminusnode2*/,  variable[8] /*pexprnode3*/) /*new AUminusExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1388: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction678___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23069, LOCATE_parser___ReduceAction678___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction678].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1389: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction678].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction679___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23073, LOCATE_parser___ReduceAction679___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction679___action, LOCATE_parser, 23080); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction679___action, LOCATE_parser, 23082); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr( variable[7] /*tkwoncenode2*/,  variable[8] /*pexprnode3*/) /*new AOnceExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1390: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction679___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23090, LOCATE_parser___ReduceAction679___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction679].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1391: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction679].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction680___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23094, LOCATE_parser___ReduceAction680___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction680___action, LOCATE_parser, 23099); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1392: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction680___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23103, LOCATE_parser___ReduceAction680___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction680].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1393: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction680].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction681___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23107, LOCATE_parser___ReduceAction681___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[7] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction681___action, LOCATE_parser, 23116); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[10] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction681___action, LOCATE_parser, 23118); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist4*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction681___action, LOCATE_parser, 23120); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode5*/)( variable[11] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode6*/)( variable[8] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[8] =  variable[11] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode6*/)( variable[8] /*listnode6*/,  variable[11] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[9] /*tkwnewnode2*/,  variable[10] /*ptypenode3*/,  NIT_NULL /*null*/,  variable[8] /*listnode6*/) /*new ANewExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1394: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction681___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23137, LOCATE_parser___ReduceAction681___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction681].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1395: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction681].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction682___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23141, LOCATE_parser___ReduceAction682___action};
-  val_t variable[12];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwissetnode2*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwissetnode2*/, COLOR_TKwisset, ID_TKwisset)) /*cast TKwisset*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction682___action, LOCATE_parser, 23148); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction682___action, LOCATE_parser, 23150); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tattridnode4*/==NIT_NULL) || VAL_ISA( variable[9] /*tattridnode4*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction682___action, LOCATE_parser, 23152); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr( variable[7] /*tkwissetnode2*/,  variable[8] /*pexprnode3*/,  variable[9] /*tattridnode4*/) /*new AIssetAttrExpr*/;
-  variable[10] = variable[11];
-  variable[3] =  variable[10] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[11],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1396: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction682___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23161, LOCATE_parser___ReduceAction682___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction682].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1397: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction682].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction683___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23165, LOCATE_parser___ReduceAction683___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction683___action, LOCATE_parser, 23171); nit_exit(1);}
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction683___action, LOCATE_parser, 23173); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr( variable[6] /*pexprnode2*/,  variable[7] /*tattridnode3*/) /*new AAttrExpr*/;
-  variable[8] = variable[9];
-  variable[3] =  variable[8] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1398: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction683___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23181, LOCATE_parser___ReduceAction683___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction683].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1399: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction683].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction684___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23185, LOCATE_parser___ReduceAction684___action};
-  val_t variable[14];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[9] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction684___action, LOCATE_parser, 23194); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction684___action, LOCATE_parser, 23196); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction684___action, LOCATE_parser, 23198); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode6*/) /*new ACallExpr*/;
-  variable[12] = variable[13];
-  variable[3] =  variable[12] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[13],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1400: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction684___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23215, LOCATE_parser___ReduceAction684___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction684].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1401: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction684].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction685___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23219, LOCATE_parser___ReduceAction685___action};
-  val_t variable[11];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[7] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction685___action, LOCATE_parser, 23226); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction685___action, LOCATE_parser, 23228); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode4*/)( variable[8] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode5*/)( variable[6] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode5*/)( variable[6] /*listnode5*/,  variable[8] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable[7] /*tkwsupernode3*/,  variable[6] /*listnode5*/) /*new ASuperExpr*/;
-  variable[9] = variable[10];
-  variable[3] =  variable[9] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[10],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1402: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction685___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23244, LOCATE_parser___ReduceAction685___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction685].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1403: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction685].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction686___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23248, LOCATE_parser___ReduceAction686___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction686___action, LOCATE_parser, 23256); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction686___action, LOCATE_parser, 23258); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction686___action, LOCATE_parser, 23260); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr( variable[8] /*pqualifiednode2*/,  variable[9] /*tkwsupernode3*/,  variable[7] /*listnode5*/) /*new ASuperExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1404: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction686___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23276, LOCATE_parser___ReduceAction686___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction686].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1405: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction686].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction687___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23280, LOCATE_parser___ReduceAction687___action};
-  val_t variable[13];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction687___action, LOCATE_parser, 23288); nit_exit(1);}
-  /* Register variable[9]: Local variable */
-  variable[9] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[10]: Result */
-  variable[10] = TAG_Bool(( variable[9] /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable[9] /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction687___action, LOCATE_parser, 23290); nit_exit(1);}
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[10] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction687___action, LOCATE_parser, 23292); nit_exit(1);}
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[10] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[10] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*listnode4*/)( variable[10] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[11])) { /*if*/
-    /* Register variable[11]: Result */
-    variable[11] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[11])) { /*if*/
-      variable[7] =  variable[10] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[10] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr( variable[8] /*pexprnode2*/,  variable[9] /*tkwinitnode3*/,  variable[7] /*listnode5*/) /*new AInitExpr*/;
-  variable[11] = variable[12];
-  variable[3] =  variable[11] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[12],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1406: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction687___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23308, LOCATE_parser___ReduceAction687___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction687].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1407: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction687].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction688___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23312, LOCATE_parser___ReduceAction688___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[10] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction688___action, LOCATE_parser, 23324); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[8] /*nodearraylist3*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable[13] /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction688___action, LOCATE_parser, 23326); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist6*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*tidnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction688___action, LOCATE_parser, 23328); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist7*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode5*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction688___action, LOCATE_parser, 23330); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode5*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode5*/)( variable[15] /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode6*/)( variable[11] /*listnode6*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode5*/ /*listnode6=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode6*/)( variable[11] /*listnode6*/,  variable[15] /*listnode5*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr( variable[12] /*tkwnewnode2*/,  variable[13] /*ptypenode3*/,  variable[14] /*tidnode4*/,  variable[11] /*listnode6*/) /*new ANewExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1408: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction688___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23347, LOCATE_parser___ReduceAction688___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction688].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1409: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction688].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction689___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23351, LOCATE_parser___ReduceAction689___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction689___action, LOCATE_parser, 23356); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr( variable[5] /*tkwselfnode2*/) /*new ASelfExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1410: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction689___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23363, LOCATE_parser___ReduceAction689___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction689].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1411: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction689].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction690___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23367, LOCATE_parser___ReduceAction690___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction690___action, LOCATE_parser, 23372); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr( variable[5] /*tkwtruenode2*/) /*new ATrueExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1412: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction690___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23379, LOCATE_parser___ReduceAction690___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction690].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1413: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction690].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction691___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23383, LOCATE_parser___ReduceAction691___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction691___action, LOCATE_parser, 23388); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr( variable[5] /*tkwfalsenode2*/) /*new AFalseExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1414: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction691___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23395, LOCATE_parser___ReduceAction691___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction691].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1415: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction691].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction692___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23399, LOCATE_parser___ReduceAction692___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction692___action, LOCATE_parser, 23404); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr( variable[5] /*tkwnullnode2*/) /*new ANullExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1416: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction692___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23411, LOCATE_parser___ReduceAction692___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction692].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1417: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction692].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction693___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23415, LOCATE_parser___ReduceAction693___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction693___action, LOCATE_parser, 23420); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr( variable[5] /*tnumbernode2*/) /*new AIntExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1418: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction693___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23427, LOCATE_parser___ReduceAction693___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction693].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1419: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction693].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction694___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23431, LOCATE_parser___ReduceAction694___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction694___action, LOCATE_parser, 23436); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr( variable[5] /*tfloatnode2*/) /*new AFloatExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1420: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction694___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23443, LOCATE_parser___ReduceAction694___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction694].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1421: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction694].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction695___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23447, LOCATE_parser___ReduceAction695___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction695___action, LOCATE_parser, 23452); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr( variable[5] /*tcharnode2*/) /*new ACharExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1422: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction695___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23459, LOCATE_parser___ReduceAction695___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction695].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1423: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction695].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction696___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23463, LOCATE_parser___ReduceAction696___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable[5] /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction696___action, LOCATE_parser, 23468); nit_exit(1);}
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr( variable[5] /*tstringnode2*/) /*new AStringExpr*/;
-  variable[6] = variable[7];
-  variable[3] =  variable[6] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1424: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction696___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23475, LOCATE_parser___ReduceAction696___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction696].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1425: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction696].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction697___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23479, LOCATE_parser___ReduceAction697___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction697___action, LOCATE_parser, 23484); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1426: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction697___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23488, LOCATE_parser___ReduceAction697___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction697].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1427: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction697].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction698___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23492, LOCATE_parser___ReduceAction698___action};
-  val_t variable[19];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[13] /*nodearraylist1*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[14] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction698___action, LOCATE_parser, 23506); nit_exit(1);}
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[10] /*nodearraylist4*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[15] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction698___action, LOCATE_parser, 23508); nit_exit(1);}
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[6] /*nodearraylist8*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable[16] /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction698___action, LOCATE_parser, 23510); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  /* Register variable[18]: Result */
-  variable[18] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr( variable[14] /*pexprnode2*/,  variable[15] /*tkwasnode3*/,  variable[16] /*ptypenode4*/) /*new AAsCastExpr*/;
-  variable[17] = variable[18];
-  variable[3] =  variable[17] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[18]: Result */
-  variable[18] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[18],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1428: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction698___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23519, LOCATE_parser___ReduceAction698___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction698].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1429: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction698].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction699___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23523, LOCATE_parser___ReduceAction699___action};
-  val_t variable[22];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  /* Register variable[13]: Result */
-  variable[13] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[12] = variable[13];
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[13] = variable[14];
-  /* Register variable[14]: Local variable */
-  /* Register variable[15]: Result */
-  variable[15] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[14] = variable[15];
-  /* Register variable[15]: Local variable */
-  /* Register variable[16]: Result */
-  variable[16] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[15] = variable[16];
-  /* Register variable[16]: Local variable */
-  variable[16] =  variable[15] /*nodearraylist1*/;
-  /* Register variable[17]: Result */
-  variable[17] = TAG_Bool(( variable[16] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[16] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction699___action, LOCATE_parser, 23539); nit_exit(1);}
-  /* Register variable[17]: Local variable */
-  variable[17] =  variable[12] /*nodearraylist4*/;
-  /* Register variable[18]: Result */
-  variable[18] = TAG_Bool(( variable[17] /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable[17] /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
-  if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction699___action, LOCATE_parser, 23541); nit_exit(1);}
-  /* Register variable[18]: Local variable */
-  variable[18] =  variable[8] /*nodearraylist8*/;
-  /* Register variable[19]: Result */
-  variable[19] = TAG_Bool(( variable[18] /*tkwnotnode4*/==NIT_NULL) || VAL_ISA( variable[18] /*tkwnotnode4*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction699___action, LOCATE_parser, 23543); nit_exit(1);}
-  /* Register variable[19]: Local variable */
-  variable[19] =  variable[6] /*nodearraylist10*/;
-  /* Register variable[20]: Result */
-  variable[20] = TAG_Bool(( variable[19] /*tkwnullnode5*/==NIT_NULL) || VAL_ISA( variable[19] /*tkwnullnode5*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction699___action, LOCATE_parser, 23545); nit_exit(1);}
-  /* Register variable[20]: Local variable */
-  /* Register variable[21]: Result */
-  variable[21] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr( variable[16] /*pexprnode2*/,  variable[17] /*tkwasnode3*/,  variable[18] /*tkwnotnode4*/,  variable[19] /*tkwnullnode5*/) /*new AAsNotnullExpr*/;
-  variable[20] = variable[21];
-  variable[3] =  variable[20] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[21]: Result */
-  variable[21] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[21],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1430: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction699___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23555, LOCATE_parser___ReduceAction699___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction699].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1431: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction699].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction700___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23559, LOCATE_parser___ReduceAction700___action};
-  val_t variable[9];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction700___action, LOCATE_parser, 23566); nit_exit(1);}
-  variable[3] =  variable[7] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[8],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1432: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction700___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23570, LOCATE_parser___ReduceAction700___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction700].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1433: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction700].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction701___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23574, LOCATE_parser___ReduceAction701___action};
-  val_t variable[6];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[4] = variable[5];
-  variable[3] =  variable[4] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(116)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[5],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1434: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction701___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23582, LOCATE_parser___ReduceAction701___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction701].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1435: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction701].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction702___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23586, LOCATE_parser___ReduceAction702___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction702___action, LOCATE_parser, 23591); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1436: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction702___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23595, LOCATE_parser___ReduceAction702___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction702].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1437: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction702].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction703___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23599, LOCATE_parser___ReduceAction703___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction703___action, LOCATE_parser, 23611); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction703___action, LOCATE_parser, 23613); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction703___action, LOCATE_parser, 23615); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction703___action, LOCATE_parser, 23624); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1438: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction703___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23641, LOCATE_parser___ReduceAction703___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction703].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1439: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction703].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction704___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23645, LOCATE_parser___ReduceAction704___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction704___action, LOCATE_parser, 23656); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction704___action, LOCATE_parser, 23658); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction704___action, LOCATE_parser, 23667); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(117)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1440: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction704___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23684, LOCATE_parser___ReduceAction704___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction704].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1441: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction704].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction705___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23688, LOCATE_parser___ReduceAction705___action};
-  val_t variable[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  variable[5] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[6]: Result */
-  variable[6] = TAG_Bool(( variable[5] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[5] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction705___action, LOCATE_parser, 23693); nit_exit(1);}
-  variable[3] =  variable[5] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[6],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1442: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction705___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23697, LOCATE_parser___ReduceAction705___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction705].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1443: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction705].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction706___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23701, LOCATE_parser___ReduceAction706___action};
-  val_t variable[18];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  /* Register variable[11]: Result */
-  variable[11] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[10] = variable[11];
-  /* Register variable[11]: Local variable */
-  /* Register variable[12]: Result */
-  variable[12] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[11] = variable[12];
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[9] /*nodearraylist1*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[12] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction706___action, LOCATE_parser, 23713); nit_exit(1);}
-  /* Register variable[13]: Local variable */
-  variable[13] =  variable[6] /*nodearraylist4*/;
-  /* Register variable[14]: Result */
-  variable[14] = TAG_Bool(( variable[13] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[13] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction706___action, LOCATE_parser, 23715); nit_exit(1);}
-  /* Register variable[14]: Local variable */
-  variable[14] =  variable[5] /*nodearraylist5*/;
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(( variable[14] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[14] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[15])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction706___action, LOCATE_parser, 23717); nit_exit(1);}
-  /* Register variable[15]: Result */
-  variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[14] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[14] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[14] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[14] /*listnode4*/)( variable[14] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[15])) { /*if*/
-    /* Register variable[15]: Result */
-    variable[15] = CALL_abstract_collection___Collection___is_empty( variable[10] /*listnode5*/)( variable[10] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[15])) { /*if*/
-      variable[10] =  variable[14] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[10] /*listnode5*/)( variable[10] /*listnode5*/,  variable[14] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[15]: Local variable */
-  variable[15] =  variable[4] /*nodearraylist6*/;
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(( variable[15] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[15] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[16])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction706___action, LOCATE_parser, 23726); nit_exit(1);}
-  /* Register variable[16]: Result */
-  variable[16] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[15] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[15] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[15] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[15] /*listnode6*/)( variable[15] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[16])) { /*if*/
-    /* Register variable[16]: Result */
-    variable[16] = CALL_abstract_collection___Collection___is_empty( variable[11] /*listnode7*/)( variable[11] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[16])) { /*if*/
-      variable[11] =  variable[15] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[11] /*listnode7*/)( variable[11] /*listnode7*/,  variable[15] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[16]: Local variable */
-  /* Register variable[17]: Result */
-  variable[17] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[12] /*pexprnode2*/,  variable[13] /*tidnode3*/,  variable[10] /*listnode5*/,  variable[11] /*listnode7*/) /*new ACallExpr*/;
-  variable[16] = variable[17];
-  variable[3] =  variable[16] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[17]: Result */
-  variable[17] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[17],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1444: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction706___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23743, LOCATE_parser___ReduceAction706___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction706].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1445: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction706].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction707___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23747, LOCATE_parser___ReduceAction707___action};
-  val_t variable[15];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  /* Register variable[8]: Result */
-  variable[8] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[7] = variable[8];
-  /* Register variable[8]: Local variable */
-  /* Register variable[9]: Result */
-  variable[9] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[8] = variable[9];
-  /* Register variable[9]: Local variable */
-  /* Register variable[10]: Result */
-  variable[10] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() /*new AImplicitSelfExpr*/;
-  variable[9] = variable[10];
-  /* Register variable[10]: Local variable */
-  variable[10] =  variable[6] /*nodearraylist1*/;
-  /* Register variable[11]: Result */
-  variable[11] = TAG_Bool(( variable[10] /*tidnode3*/==NIT_NULL) || VAL_ISA( variable[10] /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction707___action, LOCATE_parser, 23758); nit_exit(1);}
-  /* Register variable[11]: Local variable */
-  variable[11] =  variable[5] /*nodearraylist2*/;
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(( variable[11] /*listnode4*/==NIT_NULL) || VAL_ISA( variable[11] /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[12])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction707___action, LOCATE_parser, 23760); nit_exit(1);}
-  /* Register variable[12]: Result */
-  variable[12] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[11] /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable[11] /*listnode4*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[11] /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*listnode4*/)( variable[11] /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[12])) { /*if*/
-    /* Register variable[12]: Result */
-    variable[12] = CALL_abstract_collection___Collection___is_empty( variable[7] /*listnode5*/)( variable[7] /*listnode5*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[12])) { /*if*/
-      variable[7] =  variable[11] /*listnode4*/ /*listnode5=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[7] /*listnode5*/)( variable[7] /*listnode5*/,  variable[11] /*listnode4*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[12]: Local variable */
-  variable[12] =  variable[4] /*nodearraylist3*/;
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(( variable[12] /*listnode6*/==NIT_NULL) || VAL_ISA( variable[12] /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction707___action, LOCATE_parser, 23769); nit_exit(1);}
-  /* Register variable[13]: Result */
-  variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[12] /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable[12] /*listnode6*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*listnode6*/)( variable[12] /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[13])) { /*if*/
-    /* Register variable[13]: Result */
-    variable[13] = CALL_abstract_collection___Collection___is_empty( variable[8] /*listnode7*/)( variable[8] /*listnode7*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[13])) { /*if*/
-      variable[8] =  variable[12] /*listnode6*/ /*listnode7=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[8] /*listnode7*/)( variable[8] /*listnode7*/,  variable[12] /*listnode6*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[13]: Local variable */
-  /* Register variable[14]: Result */
-  variable[14] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr( variable[9] /*pexprnode2*/,  variable[10] /*tidnode3*/,  variable[7] /*listnode5*/,  variable[8] /*listnode7*/) /*new ACallExpr*/;
-  variable[13] = variable[14];
-  variable[3] =  variable[13] /*pexprnode1*/ /*node_list=*/;
-  /* Register variable[14]: Result */
-  variable[14] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(118)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[14],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1446: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction707___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23786, LOCATE_parser___ReduceAction707___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction707].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1447: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction707].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction708___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23790, LOCATE_parser___ReduceAction708___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pimportnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pimportnode1*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction708___action, LOCATE_parser, 23796); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pimportnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pimportnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pimportnode1*/)( variable[6] /*pimportnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pimportnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1448: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction708___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23803, LOCATE_parser___ReduceAction708___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction708].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1449: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction708].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction709___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23807, LOCATE_parser___ReduceAction709___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction709___action, LOCATE_parser, 23814); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pimportnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pimportnode2*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction709___action, LOCATE_parser, 23816); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pimportnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pimportnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pimportnode2*/)( variable[8] /*pimportnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pimportnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(119)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1450: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction709___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23830, LOCATE_parser___ReduceAction709___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction709].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1451: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction709].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction710___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23834, LOCATE_parser___ReduceAction710___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pclassdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclassdefnode1*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction710___action, LOCATE_parser, 23840); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclassdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclassdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclassdefnode1*/)( variable[6] /*pclassdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclassdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1452: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction710___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23847, LOCATE_parser___ReduceAction710___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction710].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1453: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction710].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction711___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23851, LOCATE_parser___ReduceAction711___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction711___action, LOCATE_parser, 23858); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pclassdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pclassdefnode2*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction711___action, LOCATE_parser, 23860); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclassdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pclassdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pclassdefnode2*/)( variable[8] /*pclassdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pclassdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(120)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1454: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction711___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23874, LOCATE_parser___ReduceAction711___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction711].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1455: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction711].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction712___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23878, LOCATE_parser___ReduceAction712___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*psuperclassnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*psuperclassnode1*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction712___action, LOCATE_parser, 23884); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*psuperclassnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*psuperclassnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*psuperclassnode1*/)( variable[6] /*psuperclassnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*psuperclassnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1456: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction712___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23891, LOCATE_parser___ReduceAction712___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction712].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1457: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction712].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction713___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23895, LOCATE_parser___ReduceAction713___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction713___action, LOCATE_parser, 23902); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*psuperclassnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*psuperclassnode2*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction713___action, LOCATE_parser, 23904); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*psuperclassnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*psuperclassnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*psuperclassnode2*/)( variable[8] /*psuperclassnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*psuperclassnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(121)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1458: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction713___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23918, LOCATE_parser___ReduceAction713___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction713].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1459: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction713].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction714___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23922, LOCATE_parser___ReduceAction714___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction714___action, LOCATE_parser, 23928); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pformaldefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pformaldefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pformaldefnode1*/)( variable[6] /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pformaldefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1460: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction714___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23935, LOCATE_parser___ReduceAction714___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction714].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1461: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction714].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction715___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23939, LOCATE_parser___ReduceAction715___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction715___action, LOCATE_parser, 23946); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pformaldefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pformaldefnode2*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction715___action, LOCATE_parser, 23948); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pformaldefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pformaldefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pformaldefnode2*/)( variable[8] /*pformaldefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pformaldefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(122)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1462: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction715___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23962, LOCATE_parser___ReduceAction715___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction715].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1463: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction715].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction716___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23966, LOCATE_parser___ReduceAction716___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction716___action, LOCATE_parser, 23972); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1464: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction716___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 23979, LOCATE_parser___ReduceAction716___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction716].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1465: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction716].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction717___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 23983, LOCATE_parser___ReduceAction717___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction717___action, LOCATE_parser, 23990); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction717___action, LOCATE_parser, 23992); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(123)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1466: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction717___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24006, LOCATE_parser___ReduceAction717___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction717].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1467: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction717].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction718___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24010, LOCATE_parser___ReduceAction718___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction718___action, LOCATE_parser, 24016); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pparamnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pparamnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pparamnode1*/)( variable[6] /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pparamnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1468: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction718___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24023, LOCATE_parser___ReduceAction718___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction718].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1469: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction718].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction719___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24027, LOCATE_parser___ReduceAction719___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction719___action, LOCATE_parser, 24034); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pparamnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pparamnode2*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction719___action, LOCATE_parser, 24036); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pparamnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pparamnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pparamnode2*/)( variable[8] /*pparamnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pparamnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(124)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1470: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction719___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24050, LOCATE_parser___ReduceAction719___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction719].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1471: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction719].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction720___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24054, LOCATE_parser___ReduceAction720___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pclosuredeclnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pclosuredeclnode1*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction720___action, LOCATE_parser, 24060); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pclosuredeclnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pclosuredeclnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pclosuredeclnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pclosuredeclnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pclosuredeclnode1*/)( variable[6] /*pclosuredeclnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pclosuredeclnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1472: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction720___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24067, LOCATE_parser___ReduceAction720___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction720].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1473: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction720].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction721___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24071, LOCATE_parser___ReduceAction721___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction721___action, LOCATE_parser, 24078); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pclosuredeclnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pclosuredeclnode2*/, COLOR_PClosureDecl, ID_PClosureDecl)) /*cast PClosureDecl*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction721___action, LOCATE_parser, 24080); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pclosuredeclnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pclosuredeclnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pclosuredeclnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pclosuredeclnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pclosuredeclnode2*/)( variable[8] /*pclosuredeclnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pclosuredeclnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(125)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1474: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction721___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24094, LOCATE_parser___ReduceAction721___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction721].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1475: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction721].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction722___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24098, LOCATE_parser___ReduceAction722___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction722___action, LOCATE_parser, 24104); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ptypenode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ptypenode1*/)( variable[6] /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ptypenode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1476: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction722___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24111, LOCATE_parser___ReduceAction722___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction722].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1477: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction722].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction723___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24115, LOCATE_parser___ReduceAction723___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction723___action, LOCATE_parser, 24122); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ptypenode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ptypenode2*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction723___action, LOCATE_parser, 24124); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ptypenode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ptypenode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ptypenode2*/)( variable[8] /*ptypenode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ptypenode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(126)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1478: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction723___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24138, LOCATE_parser___ReduceAction723___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction723].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1479: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction723].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction724___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24142, LOCATE_parser___ReduceAction724___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction724___action, LOCATE_parser, 24148); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1480: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction724___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24155, LOCATE_parser___ReduceAction724___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction724].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1481: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction724].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction725___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24159, LOCATE_parser___ReduceAction725___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction725___action, LOCATE_parser, 24166); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction725___action, LOCATE_parser, 24168); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(127)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1482: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction725___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24182, LOCATE_parser___ReduceAction725___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction725].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1483: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction725].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction726___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24186, LOCATE_parser___ReduceAction726___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction726___action, LOCATE_parser, 24192); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*listnode1*/)( variable[6] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    /* Register variable[7]: Result */
-    variable[7] = CALL_abstract_collection___Collection___is_empty( variable[5] /*listnode2*/)( variable[5] /*listnode2*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[7])) { /*if*/
-      variable[5] =  variable[6] /*listnode1*/ /*listnode2=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1484: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction726___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24203, LOCATE_parser___ReduceAction726___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction726].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1485: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction726].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction727___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24207, LOCATE_parser___ReduceAction727___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction727___action, LOCATE_parser, 24214); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*listnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction727___action, LOCATE_parser, 24216); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*listnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*listnode2*/)( variable[8] /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[8] /*listnode2*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*listnode2*/) /*IndexedCollection::append*/;
-    }
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(128)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1486: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction727___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24234, LOCATE_parser___ReduceAction727___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction727].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1487: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction727].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction728___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24238, LOCATE_parser___ReduceAction728___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction728___action, LOCATE_parser, 24244); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*pexprnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*pexprnode1*/)( variable[6] /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*pexprnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1488: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction728___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24251, LOCATE_parser___ReduceAction728___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction728].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1489: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction728].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction729___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24255, LOCATE_parser___ReduceAction729___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction729___action, LOCATE_parser, 24262); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction729___action, LOCATE_parser, 24264); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*pexprnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*pexprnode2*/)( variable[8] /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*pexprnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(129)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1490: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction729___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24278, LOCATE_parser___ReduceAction729___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction729].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1491: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction729].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction730___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24282, LOCATE_parser___ReduceAction730___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tidnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction730___action, LOCATE_parser, 24288); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tidnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tidnode1*/)( variable[6] /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tidnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1492: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction730___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24295, LOCATE_parser___ReduceAction730___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction730].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1493: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction730].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction731___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24299, LOCATE_parser___ReduceAction731___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction731___action, LOCATE_parser, 24306); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tidnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction731___action, LOCATE_parser, 24308); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tidnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*tidnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*tidnode2*/)( variable[8] /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*tidnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(130)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1494: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction731___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24322, LOCATE_parser___ReduceAction731___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction731].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1495: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction731].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction732___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24326, LOCATE_parser___ReduceAction732___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*tcommentnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*tcommentnode1*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction732___action, LOCATE_parser, 24332); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*tcommentnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*tcommentnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*tcommentnode1*/)( variable[6] /*tcommentnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*tcommentnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1496: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction732___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24339, LOCATE_parser___ReduceAction732___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction732].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1497: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction732].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction733___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24343, LOCATE_parser___ReduceAction733___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction733___action, LOCATE_parser, 24350); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*tcommentnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*tcommentnode2*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction733___action, LOCATE_parser, 24352); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*tcommentnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*tcommentnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*tcommentnode2*/)( variable[8] /*tcommentnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*tcommentnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(131)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1498: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction733___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24366, LOCATE_parser___ReduceAction733___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction733].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1499: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction733].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction734___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24370, LOCATE_parser___ReduceAction734___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*teolnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*teolnode1*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction734___action, LOCATE_parser, 24376); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*teolnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*teolnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*teolnode1*/)( variable[6] /*teolnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*teolnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1500: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction734___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24383, LOCATE_parser___ReduceAction734___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction734].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1501: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction734].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction735___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24387, LOCATE_parser___ReduceAction735___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction735___action, LOCATE_parser, 24394); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*teolnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*teolnode2*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction735___action, LOCATE_parser, 24396); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
-    }
-  }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*teolnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*teolnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*teolnode2*/)( variable[8] /*teolnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*teolnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(132)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1502: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction735___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24410, LOCATE_parser___ReduceAction735___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction735].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1503: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction735].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction736___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24414, LOCATE_parser___ReduceAction736___action};
-  val_t variable[8];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  variable[6] =  variable[4] /*nodearraylist1*/;
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(( variable[6] /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable[6] /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction736___action, LOCATE_parser, 24420); nit_exit(1);}
-  /* Register variable[7]: Result */
-  variable[7] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable[6] /*ppropdefnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*ppropdefnode1*/)( variable[6] /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[7])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[5] /*listnode2*/)( variable[5] /*listnode2*/,  variable[6] /*ppropdefnode1*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[5] /*listnode2*/ /*node_list=*/;
-  /* Register variable[7]: Result */
-  variable[7] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[7],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1504: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction736___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24427, LOCATE_parser___ReduceAction736___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction736].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1505: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction736].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction737___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 24431, LOCATE_parser___ReduceAction737___action};
-  val_t variable[10];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  variable[3] =  NIT_NULL /*null*/;
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = CALL_parser___Parser___pop( variable[1] /*p*/)( variable[1] /*p*/) /*Parser::pop*/;
-  variable[5] = variable[6];
-  /* Register variable[6]: Local variable */
-  /* Register variable[7]: Result */
-  variable[7] = NEW_Array_array___Array___init() /*new Array[Object]*/;
-  variable[6] = variable[7];
-  /* Register variable[7]: Local variable */
-  variable[7] =  variable[5] /*nodearraylist1*/;
-  /* Register variable[8]: Result */
-  variable[8] = TAG_Bool(( variable[7] /*listnode1*/==NIT_NULL) || VAL_ISA( variable[7] /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable[8])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction737___action, LOCATE_parser, 24438); nit_exit(1);}
-  /* Register variable[8]: Local variable */
-  variable[8] =  variable[4] /*nodearraylist2*/;
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(( variable[8] /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable[8] /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction737___action, LOCATE_parser, 24440); nit_exit(1);}
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable[7] /*listnode1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*listnode1*/)( variable[7] /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    /* Register variable[9]: Result */
-    variable[9] = CALL_abstract_collection___Collection___is_empty( variable[6] /*listnode3*/)( variable[6] /*listnode3*/) /*AbstractArrayRead::is_empty*/;
-    if (UNTAG_Bool(variable[9])) { /*if*/
-      variable[6] =  variable[7] /*listnode1*/ /*listnode3=*/;
-    } else { /*if*/
-      CALL_abstract_collection___IndexedCollection___append( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[7] /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  /* Register variable[9]: Result */
-  variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[8] /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable[8] /*ppropdefnode2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*ppropdefnode2*/)( variable[8] /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
-  if (UNTAG_Bool(variable[9])) { /*if*/
-    CALL_abstract_collection___SimpleCollection___add( variable[6] /*listnode3*/)( variable[6] /*listnode3*/,  variable[8] /*ppropdefnode2*/) /*AbstractArray::add*/;
-  }
-  variable[3] =  variable[6] /*listnode3*/ /*node_list=*/;
-  /* Register variable[9]: Result */
-  variable[9] = CALL_parser___Parser___go_to( variable[1] /*p*/)( variable[1] /*p*/,  TAG_Int(133)) /*Parser::go_to*/;
-  CALL_parser___Parser___push( variable[1] /*p*/)( variable[1] /*p*/, variable[9],  variable[3] /*node_list*/) /*Parser::push*/;
-  return_label1506: while(false);
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction737___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 24454, LOCATE_parser___ReduceAction737___init};
-  val_t variable[2];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_parser;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction737].i]) return;
-  /* Register variable[1]: Method return value and escape marker */
-  return_label1507: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ReduceAction737].i] = 1;
-  tracehead = trace.prev;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ComputeProdLocationVisitor___init[] = "parser::ComputeProdLocationVisitor::init";
+void parser___ComputeProdLocationVisitor___init(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___ComputeProdLocationVisitor].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1127;
+  fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser.nit:1127 */
+  CALL_parser___parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+static const char LOCATE_parser___ReduceAction___action[] = "parser::ReduceAction::action";
+void parser___ReduceAction___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1132;
+  fra.me.meth = LOCATE_parser___ReduceAction___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* parser/parser.nit:1132 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser, 1132);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction___concat[] = "parser::ReduceAction::concat";
+val_t parser___ReduceAction___concat(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1133;
+  fra.me.meth = LOCATE_parser___ReduceAction___concat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser.nit:1135 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[0] = fra.me.REG[2];
+    goto label1;
+  }
+  /* parser/parser.nit:1136 */
+  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* parser/parser.nit:1137 */
+  fra.me.REG[0] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_parser___ReduceAction___init[] = "parser::ReduceAction::init";
+void parser___ReduceAction___init(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___ReduceAction].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos3]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1140;
+  fra.me.meth = LOCATE_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* parser/parser.nit:1140 */
+  ATTR_parser___ReduceAction____goto(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+static const char LOCATE_parser___ReduceAction0___action[] = "parser::ReduceAction0::(parser::ReduceAction::action)";
+void parser___ReduceAction0___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1145;
+  fra.me.meth = LOCATE_parser___ReduceAction0___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1147 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1148 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1149 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1150 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1151 */
+  fra.me.REG[5] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
+  /* parser/parser.nit:1157 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:1158 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1158);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction1___action[] = "parser::ReduceAction1::(parser::ReduceAction::action)";
+void parser___ReduceAction1___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1163;
+  fra.me.meth = LOCATE_parser___ReduceAction1___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1165 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1166 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1167 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1168 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1169 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1171 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1171);
+  }
+  /* parser/parser.nit:1172 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1178 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1179 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1179);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction2___action[] = "parser::ReduceAction2::(parser::ReduceAction::action)";
+void parser___ReduceAction2___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1184;
+  fra.me.meth = LOCATE_parser___ReduceAction2___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1186 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1187 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1188 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1189 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1190 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1192 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1192);
+  }
+  /* parser/parser.nit:1193 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1194 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1200 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1201 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1201);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction3___action[] = "parser::ReduceAction3::(parser::ReduceAction::action)";
+void parser___ReduceAction3___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1206;
+  fra.me.meth = LOCATE_parser___ReduceAction3___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1208 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1209 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1210 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1211 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1212 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1213 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1215 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1215);
+  }
+  /* parser/parser.nit:1217 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1217);
+  }
+  /* parser/parser.nit:1218 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:1219 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1225 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1226 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1226);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction4___action[] = "parser::ReduceAction4::(parser::ReduceAction::action)";
+void parser___ReduceAction4___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1231;
+  fra.me.meth = LOCATE_parser___ReduceAction4___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1233 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1234 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1235 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1236 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1237 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1239 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1239);
+  }
+  /* parser/parser.nit:1240 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:1241 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1247 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1248 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1248);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction5___action[] = "parser::ReduceAction5::(parser::ReduceAction::action)";
+void parser___ReduceAction5___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1253;
+  fra.me.meth = LOCATE_parser___ReduceAction5___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1257 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1258 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1259 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1260 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1262 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1262);
+  }
+  /* parser/parser.nit:1264 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1264);
+  }
+  /* parser/parser.nit:1265 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:1266 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1272 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1273 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1273);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction6___action[] = "parser::ReduceAction6::(parser::ReduceAction::action)";
+void parser___ReduceAction6___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1278;
+  fra.me.meth = LOCATE_parser___ReduceAction6___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1280 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1281 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1282 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1283 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1284 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1285 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1287 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1287);
+  }
+  /* parser/parser.nit:1288 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:1290 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1290);
+  }
+  /* parser/parser.nit:1291 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:1292 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1298 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1299 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1299);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction7___action[] = "parser::ReduceAction7::(parser::ReduceAction::action)";
+void parser___ReduceAction7___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1304;
+  fra.me.meth = LOCATE_parser___ReduceAction7___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1306 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1307 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1308 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1309 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1310 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1311 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1312 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1314 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1314);
+  }
+  /* parser/parser.nit:1316 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1316);
+  }
+  /* parser/parser.nit:1317 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:1319 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1319);
+  }
+  /* parser/parser.nit:1320 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:1321 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1327 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1328 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1328);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction8___action[] = "parser::ReduceAction8::(parser::ReduceAction::action)";
+void parser___ReduceAction8___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1333;
+  fra.me.meth = LOCATE_parser___ReduceAction8___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1335 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1336 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1337 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1338 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1339 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1341 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1341);
+  }
+  /* parser/parser.nit:1342 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:1343 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1349 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1350 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1350);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction9___action[] = "parser::ReduceAction9::(parser::ReduceAction::action)";
+void parser___ReduceAction9___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1355;
+  fra.me.meth = LOCATE_parser___ReduceAction9___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1357 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1358 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1359 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1360 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1361 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1362 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1364 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1364);
+  }
+  /* parser/parser.nit:1366 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1366);
+  }
+  /* parser/parser.nit:1367 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:1368 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1374 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1375 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1375);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction10___action[] = "parser::ReduceAction10::(parser::ReduceAction::action)";
+void parser___ReduceAction10___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1380;
+  fra.me.meth = LOCATE_parser___ReduceAction10___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1382 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1383 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1384 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1385 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1386 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1387 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1389 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1389);
+  }
+  /* parser/parser.nit:1390 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:1392 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1392);
+  }
+  /* parser/parser.nit:1393 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:1394 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1400 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1401 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1401);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction11___action[] = "parser::ReduceAction11::(parser::ReduceAction::action)";
+void parser___ReduceAction11___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1406;
+  fra.me.meth = LOCATE_parser___ReduceAction11___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1408 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1409 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1410 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1411 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1412 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1413 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1414 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1416 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1416);
+  }
+  /* parser/parser.nit:1418 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1418);
+  }
+  /* parser/parser.nit:1419 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:1421 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1421);
+  }
+  /* parser/parser.nit:1422 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:1423 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1429 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1430 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1430);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction12___action[] = "parser::ReduceAction12::(parser::ReduceAction::action)";
+void parser___ReduceAction12___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1435;
+  fra.me.meth = LOCATE_parser___ReduceAction12___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1437 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1439 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1440 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1441 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1442 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1444 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1444);
+  }
+  /* parser/parser.nit:1445 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:1447 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1447);
+  }
+  /* parser/parser.nit:1448 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:1449 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1455 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1456 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1456);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction13___action[] = "parser::ReduceAction13::(parser::ReduceAction::action)";
+void parser___ReduceAction13___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1461;
+  fra.me.meth = LOCATE_parser___ReduceAction13___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1463 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1464 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1465 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1466 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1467 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1468 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1469 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1471 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1471);
+  }
+  /* parser/parser.nit:1473 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1473);
+  }
+  /* parser/parser.nit:1474 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:1476 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1476);
+  }
+  /* parser/parser.nit:1477 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:1478 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1484 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1485 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1485);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction14___action[] = "parser::ReduceAction14::(parser::ReduceAction::action)";
+void parser___ReduceAction14___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1490;
+  fra.me.meth = LOCATE_parser___ReduceAction14___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1492 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1493 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1494 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1495 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1496 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1497 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1498 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1500 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1500);
+  }
+  /* parser/parser.nit:1501 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:1503 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1503);
+  }
+  /* parser/parser.nit:1504 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:1506 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1506);
+  }
+  /* parser/parser.nit:1507 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:1508 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1514 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1515 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1515);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction15___action[] = "parser::ReduceAction15::(parser::ReduceAction::action)";
+void parser___ReduceAction15___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1520;
+  fra.me.meth = LOCATE_parser___ReduceAction15___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1524 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1525 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1526 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1527 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1528 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1529 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1531 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1531);
+  }
+  /* parser/parser.nit:1533 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1533);
+  }
+  /* parser/parser.nit:1534 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:1536 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1536);
+  }
+  /* parser/parser.nit:1537 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:1539 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1539);
+  }
+  /* parser/parser.nit:1540 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
+  fra.me.REG[9] = fra.me.REG[3];
+  /* parser/parser.nit:1541 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:1547 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:1548 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1548);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction16___action[] = "parser::ReduceAction16::(parser::ReduceAction::action)";
+void parser___ReduceAction16___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1553;
+  fra.me.meth = LOCATE_parser___ReduceAction16___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1555 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1556 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1557 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1558 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1559 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1560 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1562 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1562);
+  }
+  /* parser/parser.nit:1563 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:1564 */
+  fra.me.REG[7] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
+  /* parser/parser.nit:1567 */
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1568 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+  }
+  /* parser/parser.nit:1570 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:1576 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:1577 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1577);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction17___action[] = "parser::ReduceAction17::(parser::ReduceAction::action)";
+void parser___ReduceAction17___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1582;
+  fra.me.meth = LOCATE_parser___ReduceAction17___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1584 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1585 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1586 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1587 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1588 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1589 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1591 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1591);
+  }
+  /* parser/parser.nit:1592 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1594 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1594);
+  }
+  /* parser/parser.nit:1595 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:1596 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:1599 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1600 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:1602 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1608 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1609 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1609);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction18___action[] = "parser::ReduceAction18::(parser::ReduceAction::action)";
+void parser___ReduceAction18___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1614;
+  fra.me.meth = LOCATE_parser___ReduceAction18___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1616 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1617 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1618 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1619 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1620 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1621 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1623 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1623);
+  }
+  /* parser/parser.nit:1624 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:1625 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1627 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1627);
+  }
+  /* parser/parser.nit:1628 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1629 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1632 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1633 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1635 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1641 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1642 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1642);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction19___action[] = "parser::ReduceAction19::(parser::ReduceAction::action)";
+void parser___ReduceAction19___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1647;
+  fra.me.meth = LOCATE_parser___ReduceAction19___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1649 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1650 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1651 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1652 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1653 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1654 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1655 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1657 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1657);
+  }
+  /* parser/parser.nit:1659 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1659);
+  }
+  /* parser/parser.nit:1660 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:1661 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1663 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1663);
+  }
+  /* parser/parser.nit:1664 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1665 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1668 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1669 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1671 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1677 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1678 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1678);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction20___action[] = "parser::ReduceAction20::(parser::ReduceAction::action)";
+void parser___ReduceAction20___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1683;
+  fra.me.meth = LOCATE_parser___ReduceAction20___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1685 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1686 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1687 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1688 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1689 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1690 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1692 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1692);
+  }
+  /* parser/parser.nit:1693 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:1694 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1696 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1696);
+  }
+  /* parser/parser.nit:1697 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1698 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1701 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1702 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1704 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1710 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1711 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1711);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction21___action[] = "parser::ReduceAction21::(parser::ReduceAction::action)";
+void parser___ReduceAction21___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1716;
+  fra.me.meth = LOCATE_parser___ReduceAction21___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1718 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1719 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1720 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1721 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1722 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1723 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1724 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1726 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1726);
+  }
+  /* parser/parser.nit:1728 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1728);
+  }
+  /* parser/parser.nit:1729 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:1730 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1732 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1732);
+  }
+  /* parser/parser.nit:1733 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1734 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1737 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1738 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1740 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1746 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1747 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1747);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction22___action[] = "parser::ReduceAction22::(parser::ReduceAction::action)";
+void parser___ReduceAction22___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1752;
+  fra.me.meth = LOCATE_parser___ReduceAction22___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1754 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1755 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1756 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1757 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1758 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1759 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1760 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1762 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1762);
+  }
+  /* parser/parser.nit:1763 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:1765 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1765);
+  }
+  /* parser/parser.nit:1766 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:1767 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1769 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1769);
+  }
+  /* parser/parser.nit:1770 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1771 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1774 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1775 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1777 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1783 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1784 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1784);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction23___action[] = "parser::ReduceAction23::(parser::ReduceAction::action)";
+void parser___ReduceAction23___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1789;
+  fra.me.meth = LOCATE_parser___ReduceAction23___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1791 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1792 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1793 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1794 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1795 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1796 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1797 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1798 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1800 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1800);
+  }
+  /* parser/parser.nit:1802 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1802);
+  }
+  /* parser/parser.nit:1803 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:1805 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1805);
+  }
+  /* parser/parser.nit:1806 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:1807 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1809 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1809);
+  }
+  /* parser/parser.nit:1810 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:1811 */
+  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:1814 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1815 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:1817 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:1823 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:1824 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1824);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction24___action[] = "parser::ReduceAction24::(parser::ReduceAction::action)";
+void parser___ReduceAction24___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1829;
+  fra.me.meth = LOCATE_parser___ReduceAction24___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1831 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1832 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1833 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1834 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1835 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1836 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1838 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1838);
+  }
+  /* parser/parser.nit:1839 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1841 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1841);
+  }
+  /* parser/parser.nit:1842 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:1843 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:1846 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:1847 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1848 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:1850 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:1856 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:1857 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1857);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction25___action[] = "parser::ReduceAction25::(parser::ReduceAction::action)";
+void parser___ReduceAction25___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1862;
+  fra.me.meth = LOCATE_parser___ReduceAction25___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1864 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1865 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1866 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1867 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1868 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1869 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1870 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1872 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1872);
+  }
+  /* parser/parser.nit:1874 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1874);
+  }
+  /* parser/parser.nit:1875 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1877 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1877);
+  }
+  /* parser/parser.nit:1878 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
+  fra.me.REG[9] = fra.me.REG[3];
+  /* parser/parser.nit:1879 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:1882 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:1883 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1884 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:1886 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1892 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1893 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1893);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction26___action[] = "parser::ReduceAction26::(parser::ReduceAction::action)";
+void parser___ReduceAction26___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1898;
+  fra.me.meth = LOCATE_parser___ReduceAction26___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1900 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1901 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1902 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1903 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1904 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1905 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1906 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1908 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1908);
+  }
+  /* parser/parser.nit:1909 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:1911 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1911);
+  }
+  /* parser/parser.nit:1912 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1914 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1914);
+  }
+  /* parser/parser.nit:1915 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:1916 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:1919 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:1920 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1921 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:1923 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:1929 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:1930 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1930);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction27___action[] = "parser::ReduceAction27::(parser::ReduceAction::action)";
+void parser___ReduceAction27___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1935;
+  fra.me.meth = LOCATE_parser___ReduceAction27___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1937 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1938 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1939 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1940 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1941 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1942 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1943 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1944 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1946 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1946);
+  }
+  /* parser/parser.nit:1948 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1948);
+  }
+  /* parser/parser.nit:1949 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:1951 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1951);
+  }
+  /* parser/parser.nit:1952 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1954 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1954);
+  }
+  /* parser/parser.nit:1955 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:1956 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:1959 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:1960 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1961 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:1963 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:1969 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:1970 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1970);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction28___action[] = "parser::ReduceAction28::(parser::ReduceAction::action)";
+void parser___ReduceAction28___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 1975;
+  fra.me.meth = LOCATE_parser___ReduceAction28___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:1977 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:1978 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1979 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1980 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:1981 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1982 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1983 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1985 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1985);
+  }
+  /* parser/parser.nit:1986 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:1988 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1988);
+  }
+  /* parser/parser.nit:1989 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:1991 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1991);
+  }
+  /* parser/parser.nit:1992 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:1993 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:1996 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:1997 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:1998 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2000 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2006 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2007 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2007);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction29___action[] = "parser::ReduceAction29::(parser::ReduceAction::action)";
+void parser___ReduceAction29___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2012;
+  fra.me.meth = LOCATE_parser___ReduceAction29___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2014 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2015 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2016 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2017 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2018 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2019 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2020 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2021 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2023 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2023);
+  }
+  /* parser/parser.nit:2025 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2025);
+  }
+  /* parser/parser.nit:2026 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2028 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2028);
+  }
+  /* parser/parser.nit:2029 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2031 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2031);
+  }
+  /* parser/parser.nit:2032 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:2033 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2036 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2037 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2038 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2040 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2046 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2047 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2047);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction30___action[] = "parser::ReduceAction30::(parser::ReduceAction::action)";
+void parser___ReduceAction30___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2052;
+  fra.me.meth = LOCATE_parser___ReduceAction30___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2054 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2055 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2056 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2057 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2058 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2059 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2060 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2061 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2063 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2063);
+  }
+  /* parser/parser.nit:2064 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
+  fra.me.REG[7] = fra.me.REG[6];
+  /* parser/parser.nit:2066 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2066);
+  }
+  /* parser/parser.nit:2067 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2069 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2069);
+  }
+  /* parser/parser.nit:2070 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2072 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2072);
+  }
+  /* parser/parser.nit:2073 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:2074 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2077 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2078 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2079 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2081 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2087 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2088 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2088);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction31___action[] = "parser::ReduceAction31::(parser::ReduceAction::action)";
+void parser___ReduceAction31___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2093;
+  fra.me.meth = LOCATE_parser___ReduceAction31___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2095 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2096 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2097 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2098 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2099 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2100 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2101 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2102 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2103 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2105 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2105);
+  }
+  /* parser/parser.nit:2107 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2107);
+  }
+  /* parser/parser.nit:2108 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:2110 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2110);
+  }
+  /* parser/parser.nit:2111 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:2113 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2113);
+  }
+  /* parser/parser.nit:2114 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2116 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2116);
+  }
+  /* parser/parser.nit:2117 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:2118 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2121 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
+  fra.me.REG[10] = fra.me.REG[4];
+  /* parser/parser.nit:2122 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2123 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2125 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:2131 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:2132 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2132);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction32___action[] = "parser::ReduceAction32::(parser::ReduceAction::action)";
+void parser___ReduceAction32___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2137;
+  fra.me.meth = LOCATE_parser___ReduceAction32___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2139 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2140 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2141 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2142 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2143 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2145 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2145);
+  }
+  /* parser/parser.nit:2146 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2147 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2149 */
+  fra.me.REG[6] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:2155 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:2156 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2156);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction33___action[] = "parser::ReduceAction33::(parser::ReduceAction::action)";
+void parser___ReduceAction33___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2161;
+  fra.me.meth = LOCATE_parser___ReduceAction33___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2163 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2164 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2165 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2166 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2167 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2168 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2170 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2170);
+  }
+  /* parser/parser.nit:2172 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2172);
+  }
+  /* parser/parser.nit:2173 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2174 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2176 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2182 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2183 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2183);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction34___action[] = "parser::ReduceAction34::(parser::ReduceAction::action)";
+void parser___ReduceAction34___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2188;
+  fra.me.meth = LOCATE_parser___ReduceAction34___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2190 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2191 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2192 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2193 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2194 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2195 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2197 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2197);
+  }
+  /* parser/parser.nit:2198 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2200 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2200);
+  }
+  /* parser/parser.nit:2201 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2202 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2204 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2210 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2211 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2211);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction35___action[] = "parser::ReduceAction35::(parser::ReduceAction::action)";
+void parser___ReduceAction35___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2216;
+  fra.me.meth = LOCATE_parser___ReduceAction35___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2218 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2219 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2220 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2221 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2222 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2223 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2224 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2226 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2226);
+  }
+  /* parser/parser.nit:2228 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2228);
+  }
+  /* parser/parser.nit:2229 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:2231 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2231);
+  }
+  /* parser/parser.nit:2232 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2233 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2235 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2241 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2242 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2242);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction36___action[] = "parser::ReduceAction36::(parser::ReduceAction::action)";
+void parser___ReduceAction36___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2247;
+  fra.me.meth = LOCATE_parser___ReduceAction36___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2249 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2250 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2251 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2252 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2253 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2254 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2256 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2256);
+  }
+  /* parser/parser.nit:2257 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:2259 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2259);
+  }
+  /* parser/parser.nit:2260 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2261 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2263 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2269 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2270 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2270);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction37___action[] = "parser::ReduceAction37::(parser::ReduceAction::action)";
+void parser___ReduceAction37___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2275;
+  fra.me.meth = LOCATE_parser___ReduceAction37___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2277 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2278 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2279 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2280 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2281 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2282 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2283 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2285 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2285);
+  }
+  /* parser/parser.nit:2287 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2287);
+  }
+  /* parser/parser.nit:2288 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:2290 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2290);
+  }
+  /* parser/parser.nit:2291 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2292 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2294 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2300 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2301 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2301);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction38___action[] = "parser::ReduceAction38::(parser::ReduceAction::action)";
+void parser___ReduceAction38___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2306;
+  fra.me.meth = LOCATE_parser___ReduceAction38___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2308 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2309 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2310 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2311 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2312 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2313 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2314 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2316 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2316);
+  }
+  /* parser/parser.nit:2317 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:2319 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2319);
+  }
+  /* parser/parser.nit:2320 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:2322 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2322);
+  }
+  /* parser/parser.nit:2323 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2324 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2326 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2332 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2333 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2333);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction39___action[] = "parser::ReduceAction39::(parser::ReduceAction::action)";
+void parser___ReduceAction39___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2338;
+  fra.me.meth = LOCATE_parser___ReduceAction39___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2340 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2341 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2342 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2343 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2344 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2345 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2346 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2347 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2349 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2349);
+  }
+  /* parser/parser.nit:2351 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2351);
+  }
+  /* parser/parser.nit:2352 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:2354 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2354);
+  }
+  /* parser/parser.nit:2355 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:2357 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2357);
+  }
+  /* parser/parser.nit:2358 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2359 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2361 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2367 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2368 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2368);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction40___action[] = "parser::ReduceAction40::(parser::ReduceAction::action)";
+void parser___ReduceAction40___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2373;
+  fra.me.meth = LOCATE_parser___ReduceAction40___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2375 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2376 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2377 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2378 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2379 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2380 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2382 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2382);
+  }
+  /* parser/parser.nit:2384 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2384);
+  }
+  /* parser/parser.nit:2385 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:2386 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2387 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2389 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2395 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2396 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2396);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction41___action[] = "parser::ReduceAction41::(parser::ReduceAction::action)";
+void parser___ReduceAction41___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2401;
+  fra.me.meth = LOCATE_parser___ReduceAction41___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2403 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2404 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2405 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2406 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2407 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2408 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2409 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2411 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2411);
+  }
+  /* parser/parser.nit:2413 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2413);
+  }
+  /* parser/parser.nit:2415 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2415);
+  }
+  /* parser/parser.nit:2416 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:2417 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2418 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2420 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2426 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2427 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2427);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction42___action[] = "parser::ReduceAction42::(parser::ReduceAction::action)";
+void parser___ReduceAction42___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2432;
+  fra.me.meth = LOCATE_parser___ReduceAction42___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2434 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2435 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2436 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2437 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2438 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2439 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2440 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2442 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2442);
+  }
+  /* parser/parser.nit:2443 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:2445 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2445);
+  }
+  /* parser/parser.nit:2447 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2447);
+  }
+  /* parser/parser.nit:2448 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:2449 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2450 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2452 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2458 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2459 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2459);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction43___action[] = "parser::ReduceAction43::(parser::ReduceAction::action)";
+void parser___ReduceAction43___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2464;
+  fra.me.meth = LOCATE_parser___ReduceAction43___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2466 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2467 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2468 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2469 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2470 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2471 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2472 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2473 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2475 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2475);
+  }
+  /* parser/parser.nit:2477 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2477);
+  }
+  /* parser/parser.nit:2478 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:2480 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2480);
+  }
+  /* parser/parser.nit:2482 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2482);
+  }
+  /* parser/parser.nit:2483 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2484 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2485 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2487 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2493 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2494 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2494);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction44___action[] = "parser::ReduceAction44::(parser::ReduceAction::action)";
+void parser___ReduceAction44___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2499;
+  fra.me.meth = LOCATE_parser___ReduceAction44___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2501 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2502 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2503 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2504 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2505 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2506 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2507 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2509 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2509);
+  }
+  /* parser/parser.nit:2510 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:2512 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2512);
+  }
+  /* parser/parser.nit:2514 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2514);
+  }
+  /* parser/parser.nit:2515 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:2516 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2517 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2519 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2525 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2526 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2526);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction45___action[] = "parser::ReduceAction45::(parser::ReduceAction::action)";
+void parser___ReduceAction45___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2531;
+  fra.me.meth = LOCATE_parser___ReduceAction45___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2533 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2534 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2535 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2536 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2537 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2538 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2539 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2540 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2542 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2542);
+  }
+  /* parser/parser.nit:2544 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2544);
+  }
+  /* parser/parser.nit:2545 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2547 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2547);
+  }
+  /* parser/parser.nit:2549 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2549);
+  }
+  /* parser/parser.nit:2550 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2551 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2552 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2554 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2560 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2561 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2561);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction46___action[] = "parser::ReduceAction46::(parser::ReduceAction::action)";
+void parser___ReduceAction46___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2566;
+  fra.me.meth = LOCATE_parser___ReduceAction46___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2568 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2569 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2570 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2571 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2572 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2573 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2574 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2575 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2577 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2577);
+  }
+  /* parser/parser.nit:2578 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
+  fra.me.REG[7] = fra.me.REG[6];
+  /* parser/parser.nit:2580 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2580);
+  }
+  /* parser/parser.nit:2581 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2583 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2583);
+  }
+  /* parser/parser.nit:2585 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2585);
+  }
+  /* parser/parser.nit:2586 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2587 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2588 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2590 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2596 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2597 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2597);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction47___action[] = "parser::ReduceAction47::(parser::ReduceAction::action)";
+void parser___ReduceAction47___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2602;
+  fra.me.meth = LOCATE_parser___ReduceAction47___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2604 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2605 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2606 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2607 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2608 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2609 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2610 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2611 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2612 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2614 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2614);
+  }
+  /* parser/parser.nit:2616 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2616);
+  }
+  /* parser/parser.nit:2617 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:2619 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2619);
+  }
+  /* parser/parser.nit:2620 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:2622 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2622);
+  }
+  /* parser/parser.nit:2624 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2624);
+  }
+  /* parser/parser.nit:2625 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
+  fra.me.REG[10] = fra.me.REG[4];
+  /* parser/parser.nit:2626 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2627 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2629 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:2635 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:2636 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2636);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction48___action[] = "parser::ReduceAction48::(parser::ReduceAction::action)";
+void parser___ReduceAction48___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2641;
+  fra.me.meth = LOCATE_parser___ReduceAction48___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2643 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2644 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2645 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2646 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2647 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2648 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2649 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2651 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2651);
+  }
+  /* parser/parser.nit:2652 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
+  fra.me.REG[8] = fra.me.REG[4];
+  /* parser/parser.nit:2653 */
+  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
+  /* parser/parser.nit:2657 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2657);
+  }
+  /* parser/parser.nit:2658 */
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2659 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+  }
+  /* parser/parser.nit:2661 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2662 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2664 */
+  fra.me.REG[7] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+  /* parser/parser.nit:2670 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:2671 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2671);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction49___action[] = "parser::ReduceAction49::(parser::ReduceAction::action)";
+void parser___ReduceAction49___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2676;
+  fra.me.meth = LOCATE_parser___ReduceAction49___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2678 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2679 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2680 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2681 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2682 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2683 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2684 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2686 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2686);
+  }
+  /* parser/parser.nit:2687 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2689 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2689);
+  }
+  /* parser/parser.nit:2690 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2691 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:2695 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2695);
+  }
+  /* parser/parser.nit:2696 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2697 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:2699 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2700 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2702 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2708 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2709 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2709);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction50___action[] = "parser::ReduceAction50::(parser::ReduceAction::action)";
+void parser___ReduceAction50___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2714;
+  fra.me.meth = LOCATE_parser___ReduceAction50___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2716 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2717 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2718 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2719 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2720 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2721 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2722 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2724 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2724);
+  }
+  /* parser/parser.nit:2725 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:2726 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2728 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2728);
+  }
+  /* parser/parser.nit:2729 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2730 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2734 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2734);
+  }
+  /* parser/parser.nit:2735 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2736 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2738 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2739 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2741 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2747 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2748 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2748);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction51___action[] = "parser::ReduceAction51::(parser::ReduceAction::action)";
+void parser___ReduceAction51___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2753;
+  fra.me.meth = LOCATE_parser___ReduceAction51___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2755 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2756 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2757 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2758 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2759 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2760 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2761 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2762 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2764 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2764);
+  }
+  /* parser/parser.nit:2766 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2766);
+  }
+  /* parser/parser.nit:2767 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:2768 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2770 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2770);
+  }
+  /* parser/parser.nit:2771 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2772 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2776 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2776);
+  }
+  /* parser/parser.nit:2777 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2778 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2780 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2781 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2783 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2789 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2790 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2790);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction52___action[] = "parser::ReduceAction52::(parser::ReduceAction::action)";
+void parser___ReduceAction52___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2795;
+  fra.me.meth = LOCATE_parser___ReduceAction52___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2797 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2798 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2799 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2800 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2801 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2802 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2803 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2805 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2805);
+  }
+  /* parser/parser.nit:2806 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:2807 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2809 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2809);
+  }
+  /* parser/parser.nit:2810 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2811 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2815 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2815);
+  }
+  /* parser/parser.nit:2816 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2817 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2819 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2820 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2822 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2828 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2829 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2829);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction53___action[] = "parser::ReduceAction53::(parser::ReduceAction::action)";
+void parser___ReduceAction53___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2834;
+  fra.me.meth = LOCATE_parser___ReduceAction53___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2836 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2837 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2838 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2839 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2840 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2841 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2842 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2843 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2845 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2845);
+  }
+  /* parser/parser.nit:2847 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2847);
+  }
+  /* parser/parser.nit:2848 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2849 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2851 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2851);
+  }
+  /* parser/parser.nit:2852 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2853 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2857 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2857);
+  }
+  /* parser/parser.nit:2858 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2859 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2861 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2862 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2864 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2870 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2871 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2871);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction54___action[] = "parser::ReduceAction54::(parser::ReduceAction::action)";
+void parser___ReduceAction54___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2876;
+  fra.me.meth = LOCATE_parser___ReduceAction54___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2878 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2879 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2880 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2881 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2882 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2883 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2884 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2885 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2887 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2887);
+  }
+  /* parser/parser.nit:2888 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
+  fra.me.REG[7] = fra.me.REG[6];
+  /* parser/parser.nit:2890 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2890);
+  }
+  /* parser/parser.nit:2891 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2892 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2894 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2894);
+  }
+  /* parser/parser.nit:2895 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2896 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2900 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2900);
+  }
+  /* parser/parser.nit:2901 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2902 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2904 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2905 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2907 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:2913 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:2914 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2914);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction55___action[] = "parser::ReduceAction55::(parser::ReduceAction::action)";
+void parser___ReduceAction55___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2919;
+  fra.me.meth = LOCATE_parser___ReduceAction55___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2921 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2922 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2923 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2924 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2925 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2926 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2927 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2928 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2929 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2931 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2931);
+  }
+  /* parser/parser.nit:2933 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2933);
+  }
+  /* parser/parser.nit:2934 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:2936 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2936);
+  }
+  /* parser/parser.nit:2937 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:2938 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2940 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2940);
+  }
+  /* parser/parser.nit:2941 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:2942 */
+  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
+  /* parser/parser.nit:2946 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2946);
+  }
+  /* parser/parser.nit:2947 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2948 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:2950 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2951 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2953 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:2959 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:2960 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2960);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction56___action[] = "parser::ReduceAction56::(parser::ReduceAction::action)";
+void parser___ReduceAction56___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 2965;
+  fra.me.meth = LOCATE_parser___ReduceAction56___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:2967 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:2968 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2969 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2970 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:2971 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2972 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2973 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2975 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2975);
+  }
+  /* parser/parser.nit:2976 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:2978 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2978);
+  }
+  /* parser/parser.nit:2979 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:2980 */
+  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
+  /* parser/parser.nit:2984 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2984);
+  }
+  /* parser/parser.nit:2985 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:2986 */
+  REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2987 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+  }
+  /* parser/parser.nit:2989 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:2990 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:2992 */
+  fra.me.REG[8] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+  /* parser/parser.nit:2998 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:2999 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2999);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction57___action[] = "parser::ReduceAction57::(parser::ReduceAction::action)";
+void parser___ReduceAction57___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3004;
+  fra.me.meth = LOCATE_parser___ReduceAction57___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3006 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3007 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3008 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3009 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3010 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3011 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3012 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3013 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3015 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3015);
+  }
+  /* parser/parser.nit:3017 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3017);
+  }
+  /* parser/parser.nit:3018 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3020 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3020);
+  }
+  /* parser/parser.nit:3021 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
+  fra.me.REG[10] = fra.me.REG[4];
+  /* parser/parser.nit:3022 */
+  fra.me.REG[10] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[10]);
+  /* parser/parser.nit:3026 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3026);
+  }
+  /* parser/parser.nit:3027 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:3028 */
+  REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[10])(fra.me.REG[10], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3029 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+  }
+  /* parser/parser.nit:3031 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3032 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3034 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3040 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3041 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3041);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction58___action[] = "parser::ReduceAction58::(parser::ReduceAction::action)";
+void parser___ReduceAction58___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3046;
+  fra.me.meth = LOCATE_parser___ReduceAction58___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3048 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3049 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3050 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3051 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3052 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3053 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3054 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3055 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3057 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3057);
+  }
+  /* parser/parser.nit:3058 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
+  fra.me.REG[7] = fra.me.REG[6];
+  /* parser/parser.nit:3060 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3060);
+  }
+  /* parser/parser.nit:3061 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3063 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3063);
+  }
+  /* parser/parser.nit:3064 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3065 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3069 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3069);
+  }
+  /* parser/parser.nit:3070 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:3071 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3072 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3074 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3075 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3077 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3083 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3084 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3084);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction59___action[] = "parser::ReduceAction59::(parser::ReduceAction::action)";
+void parser___ReduceAction59___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3089;
+  fra.me.meth = LOCATE_parser___ReduceAction59___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3091 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3092 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3093 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3094 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3095 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3096 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3097 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3098 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3099 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3101 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3101);
+  }
+  /* parser/parser.nit:3103 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3103);
+  }
+  /* parser/parser.nit:3104 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:3106 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3106);
+  }
+  /* parser/parser.nit:3107 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3109 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3109);
+  }
+  /* parser/parser.nit:3110 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3111 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3115 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3115);
+  }
+  /* parser/parser.nit:3116 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:3117 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3118 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3120 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3121 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3123 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3129 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3130 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3130);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction60___action[] = "parser::ReduceAction60::(parser::ReduceAction::action)";
+void parser___ReduceAction60___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3135;
+  fra.me.meth = LOCATE_parser___ReduceAction60___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3137 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3138 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3139 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3140 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3141 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3142 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3143 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3144 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3146 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3146);
+  }
+  /* parser/parser.nit:3147 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:3149 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3149);
+  }
+  /* parser/parser.nit:3150 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3152 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3152);
+  }
+  /* parser/parser.nit:3153 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3154 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3158 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3158);
+  }
+  /* parser/parser.nit:3159 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
+  fra.me.REG[9] = fra.me.REG[5];
+  /* parser/parser.nit:3160 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3161 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3163 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3164 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3166 */
+  fra.me.REG[9] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
+  /* parser/parser.nit:3172 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:3173 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3173);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction61___action[] = "parser::ReduceAction61::(parser::ReduceAction::action)";
+void parser___ReduceAction61___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3178;
+  fra.me.meth = LOCATE_parser___ReduceAction61___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3180 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3181 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3182 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3183 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3184 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3185 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3186 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3187 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3188 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3190 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
+  }
+  /* parser/parser.nit:3192 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3192);
+  }
+  /* parser/parser.nit:3193 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
+  fra.me.REG[9] = fra.me.REG[6];
+  /* parser/parser.nit:3195 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3195);
+  }
+  /* parser/parser.nit:3196 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3198 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3198);
+  }
+  /* parser/parser.nit:3199 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3200 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3204 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3204);
+  }
+  /* parser/parser.nit:3205 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:3206 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3207 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3209 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3210 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3212 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3218 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3219 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3219);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction62___action[] = "parser::ReduceAction62::(parser::ReduceAction::action)";
+void parser___ReduceAction62___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3224;
+  fra.me.meth = LOCATE_parser___ReduceAction62___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3226 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3227 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3228 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3229 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3230 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3231 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3232 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3233 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3234 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3236 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3236);
+  }
+  /* parser/parser.nit:3237 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[7]);
+  fra.me.REG[8] = fra.me.REG[7];
+  /* parser/parser.nit:3239 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3239);
+  }
+  /* parser/parser.nit:3240 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
+  fra.me.REG[9] = fra.me.REG[6];
+  /* parser/parser.nit:3242 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3242);
+  }
+  /* parser/parser.nit:3243 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3245 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3245);
+  }
+  /* parser/parser.nit:3246 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3247 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3251 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3251);
+  }
+  /* parser/parser.nit:3252 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:3253 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3254 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3256 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3257 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3259 */
+  fra.me.REG[10] = NEW_AModule_parser___parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
+  /* parser/parser.nit:3265 */
+  fra.me.REG[2] = fra.me.REG[10];
+  /* parser/parser.nit:3266 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3266);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction63___action[] = "parser::ReduceAction63::(parser::ReduceAction::action)";
+void parser___ReduceAction63___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3271;
+  fra.me.meth = LOCATE_parser___ReduceAction63___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3273 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3274 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3275 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3276 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3277 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3278 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3279 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3280 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3281 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3282 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3284 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AModuledecl, ID_parser___parser_nodes___AModuledecl)) /*cast nullable AModuledecl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3284);
+  }
+  /* parser/parser.nit:3286 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3286);
+  }
+  /* parser/parser.nit:3287 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:3289 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3289);
+  }
+  /* parser/parser.nit:3290 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[6]);
+  fra.me.REG[10] = fra.me.REG[6];
+  /* parser/parser.nit:3292 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3292);
+  }
+  /* parser/parser.nit:3293 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3295 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3295);
+  }
+  /* parser/parser.nit:3296 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:3297 */
+  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
+  /* parser/parser.nit:3301 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3301);
+  }
+  /* parser/parser.nit:3302 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
+  fra.me.REG[11] = fra.me.REG[5];
+  /* parser/parser.nit:3303 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3304 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[6]);
+  }
+  /* parser/parser.nit:3306 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3307 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3309 */
+  fra.me.REG[11] = NEW_AModule_parser___parser_prod___AModule___init_amodule(fra.me.REG[8], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
+  /* parser/parser.nit:3315 */
+  fra.me.REG[2] = fra.me.REG[11];
+  /* parser/parser.nit:3316 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3316);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction64___action[] = "parser::ReduceAction64::(parser::ReduceAction::action)";
+void parser___ReduceAction64___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3321;
+  fra.me.meth = LOCATE_parser___ReduceAction64___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3323 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3324 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3325 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3326 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3327 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3328 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3330 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3330);
+  }
+  /* parser/parser.nit:3332 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwmodule, ID_parser___parser_nodes___TKwmodule)) /*cast nullable TKwmodule*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3332);
+  }
+  /* parser/parser.nit:3334 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3334);
+  }
+  /* parser/parser.nit:3335 */
+  fra.me.REG[3] = NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3340 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3341 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3341);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction65___action[] = "parser::ReduceAction65::(parser::ReduceAction::action)";
+void parser___ReduceAction65___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3346;
+  fra.me.meth = LOCATE_parser___ReduceAction65___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3348 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3349 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3350 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3351 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3352 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3353 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3354 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3356 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3356);
+  }
+  /* parser/parser.nit:3358 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3358);
+  }
+  /* parser/parser.nit:3360 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AModuleName, ID_parser___parser_nodes___AModuleName)) /*cast nullable AModuleName*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3360);
+  }
+  /* parser/parser.nit:3361 */
+  fra.me.REG[3] = NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3366 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3367 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3367);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction66___action[] = "parser::ReduceAction66::(parser::ReduceAction::action)";
+void parser___ReduceAction66___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3372;
+  fra.me.meth = LOCATE_parser___ReduceAction66___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3374 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3375 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3376 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3377 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3378 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3379 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3380 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3382 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3382);
+  }
+  /* parser/parser.nit:3384 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3384);
+  }
+  /* parser/parser.nit:3386 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3386);
+  }
+  /* parser/parser.nit:3387 */
+  fra.me.REG[3] = NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:3392 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3393 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3393);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction67___action[] = "parser::ReduceAction67::(parser::ReduceAction::action)";
+void parser___ReduceAction67___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3398;
+  fra.me.meth = LOCATE_parser___ReduceAction67___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3400 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3401 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3402 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3404 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___APropdef, ID_parser___parser_nodes___APropdef)) /*cast nullable APropdef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3404);
+  }
+  /* parser/parser.nit:3405 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:3406 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:3408 */
+  fra.me.REG[4] = NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
+  /* parser/parser.nit:3411 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:3412 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3412);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction68___action[] = "parser::ReduceAction68::(parser::ReduceAction::action)";
+void parser___ReduceAction68___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3417;
+  fra.me.meth = LOCATE_parser___ReduceAction68___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3419 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3420 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3421 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3422 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3422);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction69___action[] = "parser::ReduceAction69::(parser::ReduceAction::action)";
+void parser___ReduceAction69___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3427;
+  fra.me.meth = LOCATE_parser___ReduceAction69___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3429 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3433 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3433);
+  }
+  /* parser/parser.nit:3434 */
+  fra.me.REG[3] = NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:3438 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3439 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3439);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction71___action[] = "parser::ReduceAction71::(parser::ReduceAction::action)";
+void parser___ReduceAction71___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3444;
+  fra.me.meth = LOCATE_parser___ReduceAction71___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3446 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3447 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3448 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3449 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3450 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3451 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3452 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3453 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3454 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3455 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3456 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3458 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3458);
+  }
+  /* parser/parser.nit:3460 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3460);
+  }
+  /* parser/parser.nit:3462 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3462);
+  }
+  /* parser/parser.nit:3464 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3464);
+  }
+  /* parser/parser.nit:3466 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3466);
+  }
+  /* parser/parser.nit:3467 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], NIT_NULL, fra.me.REG[9], fra.me.REG[10], fra.me.REG[3]);
+  /* parser/parser.nit:3479 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3480 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3480);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction72___action[] = "parser::ReduceAction72::(parser::ReduceAction::action)";
+void parser___ReduceAction72___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3485;
+  fra.me.meth = LOCATE_parser___ReduceAction72___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3487 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3488 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3489 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3490 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3491 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3492 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3493 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3494 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3495 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3496 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3497 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3498 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3500 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3500);
+  }
+  /* parser/parser.nit:3502 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3502);
+  }
+  /* parser/parser.nit:3504 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3504);
+  }
+  /* parser/parser.nit:3506 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3506);
+  }
+  /* parser/parser.nit:3508 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3508);
+  }
+  /* parser/parser.nit:3510 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3510);
+  }
+  /* parser/parser.nit:3511 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:3523 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3524 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3524);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction73___action[] = "parser::ReduceAction73::(parser::ReduceAction::action)";
+void parser___ReduceAction73___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3529;
+  fra.me.meth = LOCATE_parser___ReduceAction73___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3531 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3532 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3533 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3534 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3535 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3536 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3537 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3538 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3539 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3540 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3541 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3542 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3544 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3544);
+  }
+  /* parser/parser.nit:3546 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3546);
+  }
+  /* parser/parser.nit:3548 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3548);
+  }
+  /* parser/parser.nit:3550 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3550);
+  }
+  /* parser/parser.nit:3552 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3552);
+  }
+  /* parser/parser.nit:3553 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
+  fra.me.REG[9] = fra.me.REG[4];
+  /* parser/parser.nit:3555 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3555);
+  }
+  /* parser/parser.nit:3556 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:3568 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3569 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3569);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction74___action[] = "parser::ReduceAction74::(parser::ReduceAction::action)";
+void parser___ReduceAction74___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3574;
+  fra.me.meth = LOCATE_parser___ReduceAction74___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3576 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3577 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3578 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3579 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3580 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3581 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3582 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3583 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3584 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3585 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3586 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3587 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3588 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3590 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3590);
+  }
+  /* parser/parser.nit:3592 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3592);
+  }
+  /* parser/parser.nit:3594 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3594);
+  }
+  /* parser/parser.nit:3596 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3596);
+  }
+  /* parser/parser.nit:3598 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3598);
+  }
+  /* parser/parser.nit:3600 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3600);
+  }
+  /* parser/parser.nit:3601 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
+  fra.me.REG[10] = fra.me.REG[4];
+  /* parser/parser.nit:3603 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3603);
+  }
+  /* parser/parser.nit:3604 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:3616 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3617 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3617);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction75___action[] = "parser::ReduceAction75::(parser::ReduceAction::action)";
+void parser___ReduceAction75___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3622;
+  fra.me.meth = LOCATE_parser___ReduceAction75___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3624 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3625 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3626 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3627 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3628 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3629 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3630 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3631 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3632 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3633 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3634 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3635 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3637 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3637);
+  }
+  /* parser/parser.nit:3639 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3639);
+  }
+  /* parser/parser.nit:3641 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3641);
+  }
+  /* parser/parser.nit:3643 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3643);
+  }
+  /* parser/parser.nit:3645 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3645);
+  }
+  /* parser/parser.nit:3647 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3647);
+  }
+  /* parser/parser.nit:3648 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[4], fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:3660 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3661 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3661);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction76___action[] = "parser::ReduceAction76::(parser::ReduceAction::action)";
+void parser___ReduceAction76___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3666;
+  fra.me.meth = LOCATE_parser___ReduceAction76___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3668 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3669 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3670 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3671 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3672 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3673 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3674 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3675 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3676 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3677 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3678 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3679 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3680 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3682 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3682);
+  }
+  /* parser/parser.nit:3684 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3684);
+  }
+  /* parser/parser.nit:3686 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3686);
+  }
+  /* parser/parser.nit:3688 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3688);
+  }
+  /* parser/parser.nit:3690 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3690);
+  }
+  /* parser/parser.nit:3692 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3692);
+  }
+  /* parser/parser.nit:3694 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3694);
+  }
+  /* parser/parser.nit:3695 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:3707 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3708 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3708);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction77___action[] = "parser::ReduceAction77::(parser::ReduceAction::action)";
+void parser___ReduceAction77___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3713;
+  fra.me.meth = LOCATE_parser___ReduceAction77___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3715 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3716 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3717 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3718 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3719 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3720 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3721 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3722 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3723 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3724 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3725 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3726 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3727 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3729 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3729);
+  }
+  /* parser/parser.nit:3731 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3731);
+  }
+  /* parser/parser.nit:3733 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3733);
+  }
+  /* parser/parser.nit:3735 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3735);
+  }
+  /* parser/parser.nit:3737 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3737);
+  }
+  /* parser/parser.nit:3738 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:3740 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3740);
+  }
+  /* parser/parser.nit:3742 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3742);
+  }
+  /* parser/parser.nit:3743 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[4], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:3755 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3756 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3756);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction78___action[] = "parser::ReduceAction78::(parser::ReduceAction::action)";
+void parser___ReduceAction78___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3761;
+  fra.me.meth = LOCATE_parser___ReduceAction78___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3763 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3764 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3765 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3766 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3767 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3768 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3769 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3770 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3771 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3772 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3773 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3774 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3775 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3776 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3778 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3778);
+  }
+  /* parser/parser.nit:3780 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3780);
+  }
+  /* parser/parser.nit:3782 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3782);
+  }
+  /* parser/parser.nit:3784 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3784);
+  }
+  /* parser/parser.nit:3786 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3786);
+  }
+  /* parser/parser.nit:3788 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3788);
+  }
+  /* parser/parser.nit:3789 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
+  fra.me.REG[11] = fra.me.REG[5];
+  /* parser/parser.nit:3791 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3791);
+  }
+  /* parser/parser.nit:3793 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3793);
+  }
+  /* parser/parser.nit:3794 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[4], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:3806 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3807 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3807);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction79___action[] = "parser::ReduceAction79::(parser::ReduceAction::action)";
+void parser___ReduceAction79___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3812;
+  fra.me.meth = LOCATE_parser___ReduceAction79___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3814 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3815 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3816 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3817 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3818 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3819 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3820 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3821 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3822 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3823 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3824 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3825 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3827 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3827);
+  }
+  /* parser/parser.nit:3829 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3829);
+  }
+  /* parser/parser.nit:3831 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3831);
+  }
+  /* parser/parser.nit:3833 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3833);
+  }
+  /* parser/parser.nit:3835 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3835);
+  }
+  /* parser/parser.nit:3836 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
+  fra.me.REG[10] = fra.me.REG[4];
+  /* parser/parser.nit:3838 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3838);
+  }
+  /* parser/parser.nit:3839 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:3851 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3852 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3852);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction80___action[] = "parser::ReduceAction80::(parser::ReduceAction::action)";
+void parser___ReduceAction80___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3857;
+  fra.me.meth = LOCATE_parser___ReduceAction80___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3859 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3860 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3861 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3862 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3863 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3864 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3865 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3866 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3867 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3868 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3869 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3870 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3871 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3873 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3873);
+  }
+  /* parser/parser.nit:3875 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3875);
+  }
+  /* parser/parser.nit:3877 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3877);
+  }
+  /* parser/parser.nit:3879 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3879);
+  }
+  /* parser/parser.nit:3881 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3881);
+  }
+  /* parser/parser.nit:3883 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3883);
+  }
+  /* parser/parser.nit:3884 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
+  fra.me.REG[11] = fra.me.REG[4];
+  /* parser/parser.nit:3886 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3886);
+  }
+  /* parser/parser.nit:3887 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:3899 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3900 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3900);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction81___action[] = "parser::ReduceAction81::(parser::ReduceAction::action)";
+void parser___ReduceAction81___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3905;
+  fra.me.meth = LOCATE_parser___ReduceAction81___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3907 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3908 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3909 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3910 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3911 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3912 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3913 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3914 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3915 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3916 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3917 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3918 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3919 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3921 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3921);
+  }
+  /* parser/parser.nit:3923 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3923);
+  }
+  /* parser/parser.nit:3925 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3925);
+  }
+  /* parser/parser.nit:3927 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3927);
+  }
+  /* parser/parser.nit:3929 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3929);
+  }
+  /* parser/parser.nit:3930 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:3932 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3932);
+  }
+  /* parser/parser.nit:3933 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
+  fra.me.REG[11] = fra.me.REG[4];
+  /* parser/parser.nit:3935 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3935);
+  }
+  /* parser/parser.nit:3936 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:3948 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:3949 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3949);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction82___action[] = "parser::ReduceAction82::(parser::ReduceAction::action)";
+void parser___ReduceAction82___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 3954;
+  fra.me.meth = LOCATE_parser___ReduceAction82___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:3956 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:3957 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3958 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3959 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3960 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3961 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3962 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3963 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3964 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3965 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3966 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:3967 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3968 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3969 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:3971 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3971);
+  }
+  /* parser/parser.nit:3973 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3973);
+  }
+  /* parser/parser.nit:3975 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3975);
+  }
+  /* parser/parser.nit:3977 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3977);
+  }
+  /* parser/parser.nit:3979 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3979);
+  }
+  /* parser/parser.nit:3981 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3981);
+  }
+  /* parser/parser.nit:3982 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
+  fra.me.REG[11] = fra.me.REG[5];
+  /* parser/parser.nit:3984 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3984);
+  }
+  /* parser/parser.nit:3985 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:3987 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3987);
+  }
+  /* parser/parser.nit:3988 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4000 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4001 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4001);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction83___action[] = "parser::ReduceAction83::(parser::ReduceAction::action)";
+void parser___ReduceAction83___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4006;
+  fra.me.meth = LOCATE_parser___ReduceAction83___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4008 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4009 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4010 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4011 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4012 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4013 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4014 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4015 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4016 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4017 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4018 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4019 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4020 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4022 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4022);
+  }
+  /* parser/parser.nit:4024 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4024);
+  }
+  /* parser/parser.nit:4026 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4026);
+  }
+  /* parser/parser.nit:4028 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4028);
+  }
+  /* parser/parser.nit:4030 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4030);
+  }
+  /* parser/parser.nit:4032 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4032);
+  }
+  /* parser/parser.nit:4033 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
+  fra.me.REG[11] = fra.me.REG[4];
+  /* parser/parser.nit:4035 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4035);
+  }
+  /* parser/parser.nit:4036 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4048 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4049 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4049);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction84___action[] = "parser::ReduceAction84::(parser::ReduceAction::action)";
+void parser___ReduceAction84___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4054;
+  fra.me.meth = LOCATE_parser___ReduceAction84___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4056 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4057 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4058 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4059 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4060 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4061 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4062 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4063 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4064 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4065 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4066 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4067 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4068 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4069 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4071 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4071);
+  }
+  /* parser/parser.nit:4073 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4073);
+  }
+  /* parser/parser.nit:4075 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4075);
+  }
+  /* parser/parser.nit:4077 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4077);
+  }
+  /* parser/parser.nit:4079 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4079);
+  }
+  /* parser/parser.nit:4081 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4081);
+  }
+  /* parser/parser.nit:4083 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4083);
+  }
+  /* parser/parser.nit:4084 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4086 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4086);
+  }
+  /* parser/parser.nit:4087 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4099 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4100 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4100);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction85___action[] = "parser::ReduceAction85::(parser::ReduceAction::action)";
+void parser___ReduceAction85___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4105;
+  fra.me.meth = LOCATE_parser___ReduceAction85___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4107 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4108 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4109 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4110 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4111 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4112 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4113 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4114 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4115 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4116 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4117 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4118 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4119 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4120 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4122 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4122);
+  }
+  /* parser/parser.nit:4124 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4124);
+  }
+  /* parser/parser.nit:4126 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4126);
+  }
+  /* parser/parser.nit:4128 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4128);
+  }
+  /* parser/parser.nit:4130 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4130);
+  }
+  /* parser/parser.nit:4131 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:4133 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4133);
+  }
+  /* parser/parser.nit:4135 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4135);
+  }
+  /* parser/parser.nit:4136 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4138 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4138);
+  }
+  /* parser/parser.nit:4139 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4151 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4152 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4152);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction86___action[] = "parser::ReduceAction86::(parser::ReduceAction::action)";
+void parser___ReduceAction86___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4157;
+  fra.me.meth = LOCATE_parser___ReduceAction86___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4159 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4160 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4162 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4163 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4164 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4165 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4166 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4167 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4168 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4169 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4170 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4171 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4172 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4173 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4175 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4175);
+  }
+  /* parser/parser.nit:4177 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4177);
+  }
+  /* parser/parser.nit:4179 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4179);
+  }
+  /* parser/parser.nit:4181 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4181);
+  }
+  /* parser/parser.nit:4183 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4183);
+  }
+  /* parser/parser.nit:4185 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4185);
+  }
+  /* parser/parser.nit:4186 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:4188 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
+  }
+  /* parser/parser.nit:4190 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4190);
+  }
+  /* parser/parser.nit:4191 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4193 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4193);
+  }
+  /* parser/parser.nit:4194 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4206 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4207 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4207);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction87___action[] = "parser::ReduceAction87::(parser::ReduceAction::action)";
+void parser___ReduceAction87___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4212;
+  fra.me.meth = LOCATE_parser___ReduceAction87___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4214 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4215 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4216 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4218 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4219 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4220 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4221 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4222 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4223 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4224 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4225 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4227 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4227);
+  }
+  /* parser/parser.nit:4229 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4229);
+  }
+  /* parser/parser.nit:4231 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4231);
+  }
+  /* parser/parser.nit:4233 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4233);
+  }
+  /* parser/parser.nit:4235 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4235);
+  }
+  /* parser/parser.nit:4236 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
+  fra.me.REG[11] = fra.me.REG[4];
+  /* parser/parser.nit:4238 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
+  }
+  /* parser/parser.nit:4239 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], NIT_NULL, fra.me.REG[10], fra.me.REG[11], fra.me.REG[3]);
+  /* parser/parser.nit:4251 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4252 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4252);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction88___action[] = "parser::ReduceAction88::(parser::ReduceAction::action)";
+void parser___ReduceAction88___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4257;
+  fra.me.meth = LOCATE_parser___ReduceAction88___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4259 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4260 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4261 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4262 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4263 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4264 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4265 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4266 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4267 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4268 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4269 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4270 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4271 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4273 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4273);
+  }
+  /* parser/parser.nit:4275 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4275);
+  }
+  /* parser/parser.nit:4277 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4277);
+  }
+  /* parser/parser.nit:4279 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4279);
+  }
+  /* parser/parser.nit:4281 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4281);
+  }
+  /* parser/parser.nit:4283 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4283);
+  }
+  /* parser/parser.nit:4284 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4286 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4286);
+  }
+  /* parser/parser.nit:4287 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4299 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4300 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4300);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction89___action[] = "parser::ReduceAction89::(parser::ReduceAction::action)";
+void parser___ReduceAction89___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4305;
+  fra.me.meth = LOCATE_parser___ReduceAction89___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4307 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4308 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4309 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4310 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4311 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4312 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4313 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4314 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4315 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4316 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4317 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4318 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4319 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4321 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4321);
+  }
+  /* parser/parser.nit:4323 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4323);
+  }
+  /* parser/parser.nit:4325 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4325);
+  }
+  /* parser/parser.nit:4327 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4327);
+  }
+  /* parser/parser.nit:4329 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4329);
+  }
+  /* parser/parser.nit:4330 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
+  fra.me.REG[10] = fra.me.REG[5];
+  /* parser/parser.nit:4332 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4332);
+  }
+  /* parser/parser.nit:4333 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4335 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4335);
+  }
+  /* parser/parser.nit:4336 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4348 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4349 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4349);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction90___action[] = "parser::ReduceAction90::(parser::ReduceAction::action)";
+void parser___ReduceAction90___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4354;
+  fra.me.meth = LOCATE_parser___ReduceAction90___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4356 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4357 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4358 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4359 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4360 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4361 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4362 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4363 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4364 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4365 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4366 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4367 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4368 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4369 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4371 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4371);
+  }
+  /* parser/parser.nit:4373 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4373);
+  }
+  /* parser/parser.nit:4375 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4375);
+  }
+  /* parser/parser.nit:4377 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4377);
+  }
+  /* parser/parser.nit:4379 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4379);
+  }
+  /* parser/parser.nit:4381 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4381);
+  }
+  /* parser/parser.nit:4382 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
+  fra.me.REG[11] = fra.me.REG[5];
+  /* parser/parser.nit:4384 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4384);
+  }
+  /* parser/parser.nit:4385 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4387 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4387);
+  }
+  /* parser/parser.nit:4388 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4400 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4401 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4401);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction91___action[] = "parser::ReduceAction91::(parser::ReduceAction::action)";
+void parser___ReduceAction91___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4406;
+  fra.me.meth = LOCATE_parser___ReduceAction91___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4408 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4409 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4410 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4411 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4412 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4413 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4414 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4415 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4416 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4417 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4418 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4419 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4420 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4422 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4422);
+  }
+  /* parser/parser.nit:4424 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4424);
+  }
+  /* parser/parser.nit:4426 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4426);
+  }
+  /* parser/parser.nit:4428 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4428);
+  }
+  /* parser/parser.nit:4430 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4430);
+  }
+  /* parser/parser.nit:4432 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4432);
+  }
+  /* parser/parser.nit:4433 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4435 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4435);
+  }
+  /* parser/parser.nit:4436 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[5], fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4448 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4449 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4449);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction92___action[] = "parser::ReduceAction92::(parser::ReduceAction::action)";
+void parser___ReduceAction92___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4454;
+  fra.me.meth = LOCATE_parser___ReduceAction92___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4456 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4457 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4458 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4459 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4460 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4461 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4462 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4463 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4464 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4465 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4466 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4467 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4468 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4469 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4471 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4471);
+  }
+  /* parser/parser.nit:4473 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4473);
+  }
+  /* parser/parser.nit:4475 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4475);
+  }
+  /* parser/parser.nit:4477 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4477);
+  }
+  /* parser/parser.nit:4479 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4479);
+  }
+  /* parser/parser.nit:4481 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4481);
+  }
+  /* parser/parser.nit:4483 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4483);
+  }
+  /* parser/parser.nit:4484 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4486 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4486);
+  }
+  /* parser/parser.nit:4487 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4499 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4500 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4500);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction93___action[] = "parser::ReduceAction93::(parser::ReduceAction::action)";
+void parser___ReduceAction93___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4505;
+  fra.me.meth = LOCATE_parser___ReduceAction93___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4507 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4508 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4509 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4510 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4511 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4512 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4513 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4514 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4515 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4516 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4517 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4518 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4519 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4520 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4522 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4522);
+  }
+  /* parser/parser.nit:4524 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4524);
+  }
+  /* parser/parser.nit:4526 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4526);
+  }
+  /* parser/parser.nit:4528 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4528);
+  }
+  /* parser/parser.nit:4530 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4530);
+  }
+  /* parser/parser.nit:4531 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:4533 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4533);
+  }
+  /* parser/parser.nit:4535 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4535);
+  }
+  /* parser/parser.nit:4536 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4538 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4538);
+  }
+  /* parser/parser.nit:4539 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[5], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4551 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4552 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4552);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction94___action[] = "parser::ReduceAction94::(parser::ReduceAction::action)";
+void parser___ReduceAction94___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4557;
+  fra.me.meth = LOCATE_parser___ReduceAction94___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4559 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4560 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4561 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4562 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4563 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4564 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4565 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4566 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4567 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4568 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4569 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4570 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4571 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4572 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4573 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4575 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4575);
+  }
+  /* parser/parser.nit:4577 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4577);
+  }
+  /* parser/parser.nit:4579 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4579);
+  }
+  /* parser/parser.nit:4581 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4581);
+  }
+  /* parser/parser.nit:4583 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4583);
+  }
+  /* parser/parser.nit:4585 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4585);
+  }
+  /* parser/parser.nit:4586 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:4588 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4588);
+  }
+  /* parser/parser.nit:4590 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4590);
+  }
+  /* parser/parser.nit:4591 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:4593 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4593);
+  }
+  /* parser/parser.nit:4594 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[5], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4606 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4607 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4607);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction95___action[] = "parser::ReduceAction95::(parser::ReduceAction::action)";
+void parser___ReduceAction95___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[12];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4612;
+  fra.me.meth = LOCATE_parser___ReduceAction95___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 13;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4614 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4615 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4616 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4617 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4618 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4619 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4620 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4621 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4622 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4623 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4624 */
+  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4625 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4626 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4628 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4628);
+  }
+  /* parser/parser.nit:4630 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4630);
+  }
+  /* parser/parser.nit:4632 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4632);
+  }
+  /* parser/parser.nit:4634 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4634);
+  }
+  /* parser/parser.nit:4636 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4636);
+  }
+  /* parser/parser.nit:4637 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
+  fra.me.REG[11] = fra.me.REG[5];
+  /* parser/parser.nit:4639 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4639);
+  }
+  /* parser/parser.nit:4640 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
+  fra.me.REG[12] = fra.me.REG[4];
+  /* parser/parser.nit:4642 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4642);
+  }
+  /* parser/parser.nit:4643 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], NIT_NULL, fra.me.REG[11], fra.me.REG[12], fra.me.REG[3]);
+  /* parser/parser.nit:4655 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4656 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4656);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction96___action[] = "parser::ReduceAction96::(parser::ReduceAction::action)";
+void parser___ReduceAction96___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4661;
+  fra.me.meth = LOCATE_parser___ReduceAction96___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4663 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4664 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4665 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4666 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4667 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4668 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4669 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4670 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4671 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4672 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4673 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4674 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4675 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4676 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4678 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4678);
+  }
+  /* parser/parser.nit:4680 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4680);
+  }
+  /* parser/parser.nit:4682 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4682);
+  }
+  /* parser/parser.nit:4684 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4684);
+  }
+  /* parser/parser.nit:4686 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
+  }
+  /* parser/parser.nit:4688 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
+  }
+  /* parser/parser.nit:4689 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:4691 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4691);
+  }
+  /* parser/parser.nit:4692 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4694 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4694);
+  }
+  /* parser/parser.nit:4695 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4707 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4708 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4708);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction97___action[] = "parser::ReduceAction97::(parser::ReduceAction::action)";
+void parser___ReduceAction97___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4713;
+  fra.me.meth = LOCATE_parser___ReduceAction97___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4715 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4716 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4717 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4718 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4719 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4720 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4721 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4722 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4723 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4724 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4725 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4726 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4727 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4728 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4730 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4730);
+  }
+  /* parser/parser.nit:4732 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4732);
+  }
+  /* parser/parser.nit:4734 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
+  }
+  /* parser/parser.nit:4736 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4736);
+  }
+  /* parser/parser.nit:4738 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4738);
+  }
+  /* parser/parser.nit:4739 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[6]);
+  fra.me.REG[11] = fra.me.REG[6];
+  /* parser/parser.nit:4741 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4741);
+  }
+  /* parser/parser.nit:4742 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:4744 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4744);
+  }
+  /* parser/parser.nit:4745 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4747 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4747);
+  }
+  /* parser/parser.nit:4748 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], NIT_NULL, fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4760 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4761 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4761);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction98___action[] = "parser::ReduceAction98::(parser::ReduceAction::action)";
+void parser___ReduceAction98___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4766;
+  fra.me.meth = LOCATE_parser___ReduceAction98___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4768 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4769 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4770 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4771 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4772 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4773 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4774 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4775 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4776 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4777 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4778 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4779 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4780 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4781 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4782 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4784 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4784);
+  }
+  /* parser/parser.nit:4786 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4786);
+  }
+  /* parser/parser.nit:4788 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4788);
+  }
+  /* parser/parser.nit:4790 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4790);
+  }
+  /* parser/parser.nit:4792 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4792);
+  }
+  /* parser/parser.nit:4794 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4794);
+  }
+  /* parser/parser.nit:4795 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[6]);
+  fra.me.REG[12] = fra.me.REG[6];
+  /* parser/parser.nit:4797 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4797);
+  }
+  /* parser/parser.nit:4798 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:4800 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4800);
+  }
+  /* parser/parser.nit:4801 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:4803 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4803);
+  }
+  /* parser/parser.nit:4804 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], NIT_NULL, fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4816 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4817 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4817);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction99___action[] = "parser::ReduceAction99::(parser::ReduceAction::action)";
+void parser___ReduceAction99___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[13];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4822;
+  fra.me.meth = LOCATE_parser___ReduceAction99___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 14;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4824 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4825 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4826 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4827 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4828 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4829 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4830 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4831 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4832 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4833 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4834 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4835 */
+  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4836 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4837 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4839 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4839);
+  }
+  /* parser/parser.nit:4841 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4841);
+  }
+  /* parser/parser.nit:4843 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4843);
+  }
+  /* parser/parser.nit:4845 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4845);
+  }
+  /* parser/parser.nit:4847 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4847);
+  }
+  /* parser/parser.nit:4849 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4849);
+  }
+  /* parser/parser.nit:4850 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[5]);
+  fra.me.REG[12] = fra.me.REG[5];
+  /* parser/parser.nit:4852 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4852);
+  }
+  /* parser/parser.nit:4853 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
+  fra.me.REG[13] = fra.me.REG[4];
+  /* parser/parser.nit:4855 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4855);
+  }
+  /* parser/parser.nit:4856 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[11], fra.me.REG[6], fra.me.REG[12], fra.me.REG[13], fra.me.REG[3]);
+  /* parser/parser.nit:4868 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4869 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4869);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction100___action[] = "parser::ReduceAction100::(parser::ReduceAction::action)";
+void parser___ReduceAction100___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4874;
+  fra.me.meth = LOCATE_parser___ReduceAction100___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4876 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4877 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4878 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4879 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4880 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4881 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4882 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4883 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4884 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4885 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4886 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4887 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4888 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4889 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4890 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4892 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4892);
+  }
+  /* parser/parser.nit:4894 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4894);
+  }
+  /* parser/parser.nit:4896 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4896);
+  }
+  /* parser/parser.nit:4898 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4898);
+  }
+  /* parser/parser.nit:4900 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4900);
+  }
+  /* parser/parser.nit:4902 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4902);
+  }
+  /* parser/parser.nit:4904 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4904);
+  }
+  /* parser/parser.nit:4905 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:4907 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4907);
+  }
+  /* parser/parser.nit:4908 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:4910 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4910);
+  }
+  /* parser/parser.nit:4911 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[12], fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4923 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4924 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4924);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction101___action[] = "parser::ReduceAction101::(parser::ReduceAction::action)";
+void parser___ReduceAction101___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[14];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4929;
+  fra.me.meth = LOCATE_parser___ReduceAction101___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 15;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4931 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4932 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4933 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4934 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4935 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4936 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4937 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4938 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4939 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4940 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4941 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4942 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4943 */
+  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4944 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4945 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:4947 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4947);
+  }
+  /* parser/parser.nit:4949 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4949);
+  }
+  /* parser/parser.nit:4951 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4951);
+  }
+  /* parser/parser.nit:4953 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4953);
+  }
+  /* parser/parser.nit:4955 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4955);
+  }
+  /* parser/parser.nit:4956 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[7]);
+  fra.me.REG[12] = fra.me.REG[7];
+  /* parser/parser.nit:4958 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4958);
+  }
+  /* parser/parser.nit:4960 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4960);
+  }
+  /* parser/parser.nit:4961 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[5]);
+  fra.me.REG[13] = fra.me.REG[5];
+  /* parser/parser.nit:4963 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4963);
+  }
+  /* parser/parser.nit:4964 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[4]);
+  fra.me.REG[14] = fra.me.REG[4];
+  /* parser/parser.nit:4966 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4966);
+  }
+  /* parser/parser.nit:4967 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], NIT_NULL, fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[12], fra.me.REG[6], fra.me.REG[13], fra.me.REG[14], fra.me.REG[3]);
+  /* parser/parser.nit:4979 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:4980 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4980);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction102___action[] = "parser::ReduceAction102::(parser::ReduceAction::action)";
+void parser___ReduceAction102___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 4985;
+  fra.me.meth = LOCATE_parser___ReduceAction102___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 16;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[12] = NIT_NULL;
+  fra.me.REG[13] = NIT_NULL;
+  fra.me.REG[14] = NIT_NULL;
+  fra.me.REG[15] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:4987 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:4988 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4989 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4990 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4991 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4992 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4993 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4994 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4995 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4996 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4997 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4998 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:4999 */
+  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5000 */
+  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5001 */
+  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5002 */
+  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5004 */
+  REGB0 = TAG_Bool((fra.me.REG[12]==NIT_NULL) || VAL_ISA(fra.me.REG[12], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5004);
+  }
+  /* parser/parser.nit:5006 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5006);
+  }
+  /* parser/parser.nit:5008 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5008);
+  }
+  /* parser/parser.nit:5010 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AClasskind, ID_parser___parser_nodes___AClasskind)) /*cast nullable AClasskind*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5010);
+  }
+  /* parser/parser.nit:5012 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5012);
+  }
+  /* parser/parser.nit:5014 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5014);
+  }
+  /* parser/parser.nit:5015 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[7]);
+  fra.me.REG[13] = fra.me.REG[7];
+  /* parser/parser.nit:5017 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5017);
+  }
+  /* parser/parser.nit:5019 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5019);
+  }
+  /* parser/parser.nit:5020 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[14], fra.me.REG[5]);
+  fra.me.REG[14] = fra.me.REG[5];
+  /* parser/parser.nit:5022 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5022);
+  }
+  /* parser/parser.nit:5023 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[15], fra.me.REG[4]);
+  fra.me.REG[15] = fra.me.REG[4];
+  /* parser/parser.nit:5025 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5025);
+  }
+  /* parser/parser.nit:5026 */
+  fra.me.REG[3] = NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[12], fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[13], fra.me.REG[6], fra.me.REG[14], fra.me.REG[15], fra.me.REG[3]);
+  /* parser/parser.nit:5038 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5039 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5039);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction103___action[] = "parser::ReduceAction103::(parser::ReduceAction::action)";
+void parser___ReduceAction103___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5044;
+  fra.me.meth = LOCATE_parser___ReduceAction103___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5046 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5047 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5049 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5049);
+  }
+  /* parser/parser.nit:5050 */
+  fra.me.REG[3] = NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:5053 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5054 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5054);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction104___action[] = "parser::ReduceAction104::(parser::ReduceAction::action)";
+void parser___ReduceAction104___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5059;
+  fra.me.meth = LOCATE_parser___ReduceAction104___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5061 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5062 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5065 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwabstract, ID_parser___parser_nodes___TKwabstract)) /*cast nullable TKwabstract*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5065);
+  }
+  /* parser/parser.nit:5067 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwclass, ID_parser___parser_nodes___TKwclass)) /*cast nullable TKwclass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5067);
+  }
+  /* parser/parser.nit:5068 */
+  fra.me.REG[3] = NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5072 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5073 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5073);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction105___action[] = "parser::ReduceAction105::(parser::ReduceAction::action)";
+void parser___ReduceAction105___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5078;
+  fra.me.meth = LOCATE_parser___ReduceAction105___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5080 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5081 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwinterface, ID_parser___parser_nodes___TKwinterface)) /*cast nullable TKwinterface*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5083);
+  }
+  /* parser/parser.nit:5084 */
+  fra.me.REG[3] = NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:5087 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5088 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5088);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction106___action[] = "parser::ReduceAction106::(parser::ReduceAction::action)";
+void parser___ReduceAction106___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5093;
+  fra.me.meth = LOCATE_parser___ReduceAction106___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5095 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5096 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5098 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwenum, ID_parser___parser_nodes___TKwenum)) /*cast nullable TKwenum*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5098);
+  }
+  /* parser/parser.nit:5099 */
+  fra.me.REG[3] = NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:5102 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5103 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5103);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction107___action[] = "parser::ReduceAction107::(parser::ReduceAction::action)";
+void parser___ReduceAction107___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5108;
+  fra.me.meth = LOCATE_parser___ReduceAction107___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5110 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5111 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5113 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwextern, ID_parser___parser_nodes___TKwextern)) /*cast nullable TKwextern*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5113);
+  }
+  /* parser/parser.nit:5114 */
+  fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[3]);
+  /* parser/parser.nit:5117 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5118 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5118);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction108___action[] = "parser::ReduceAction108::(parser::ReduceAction::action)";
+void parser___ReduceAction108___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5123;
+  fra.me.meth = LOCATE_parser___ReduceAction108___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5125 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5126 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5127 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5128 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5129 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5130 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5131 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5133 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:5134 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:5136 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:5137 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5137);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction109___action[] = "parser::ReduceAction109::(parser::ReduceAction::action)";
+void parser___ReduceAction109___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5142;
+  fra.me.meth = LOCATE_parser___ReduceAction109___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5144 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5145 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5146 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5147 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5148 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5149 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5150 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5151 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:5154 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5154);
+  }
+  /* parser/parser.nit:5155 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:5156 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:5158 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:5159 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:5160 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5160);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction110___action[] = "parser::ReduceAction110::(parser::ReduceAction::action)";
+void parser___ReduceAction110___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5165;
+  fra.me.meth = LOCATE_parser___ReduceAction110___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5167 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5168 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5169 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5170 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5172 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5173 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5173);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction111___action[] = "parser::ReduceAction111::(parser::ReduceAction::action)";
+void parser___ReduceAction111___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5178;
+  fra.me.meth = LOCATE_parser___ReduceAction111___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5180 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5181 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5183 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5183);
+  }
+  /* parser/parser.nit:5184 */
+  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:5188 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5189 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5189);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction112___action[] = "parser::ReduceAction112::(parser::ReduceAction::action)";
+void parser___ReduceAction112___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5194;
+  fra.me.meth = LOCATE_parser___ReduceAction112___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5196 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5197 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5198 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5200 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5200);
+  }
+  /* parser/parser.nit:5202 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5202);
+  }
+  /* parser/parser.nit:5203 */
+  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5207 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5208 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5208);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction113___action[] = "parser::ReduceAction113::(parser::ReduceAction::action)";
+void parser___ReduceAction113___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5213;
+  fra.me.meth = LOCATE_parser___ReduceAction113___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5215 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5216 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5218 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5219 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5221 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwspecial, ID_parser___parser_nodes___TKwspecial)) /*cast nullable TKwspecial*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5221);
+  }
+  /* parser/parser.nit:5223 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5223);
+  }
+  /* parser/parser.nit:5224 */
+  fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:5229 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5230 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5230);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction114___action[] = "parser::ReduceAction114::(parser::ReduceAction::action)";
+void parser___ReduceAction114___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5235;
+  fra.me.meth = LOCATE_parser___ReduceAction114___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5237 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5238 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5239 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5240 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5241 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5243 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5243);
+  }
+  /* parser/parser.nit:5245 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5245);
+  }
+  /* parser/parser.nit:5246 */
+  fra.me.REG[3] = NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5251 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5252 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5252);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction115___action[] = "parser::ReduceAction115::(parser::ReduceAction::action)";
+void parser___ReduceAction115___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5257;
+  fra.me.meth = LOCATE_parser___ReduceAction115___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5259 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5260 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5261 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5263 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5264 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5264);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction116___action[] = "parser::ReduceAction116::(parser::ReduceAction::action)";
+void parser___ReduceAction116___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5269;
+  fra.me.meth = LOCATE_parser___ReduceAction116___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5271 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5272 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5273 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5274 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5275 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5276 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5277 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5278 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5280 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5280);
+  }
+  /* parser/parser.nit:5282 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5282);
+  }
+  /* parser/parser.nit:5284 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5284);
+  }
+  /* parser/parser.nit:5286 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5286);
+  }
+  /* parser/parser.nit:5288 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5288);
+  }
+  /* parser/parser.nit:5290 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5290);
+  }
+  /* parser/parser.nit:5291 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5300 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5301 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5301);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction117___action[] = "parser::ReduceAction117::(parser::ReduceAction::action)";
+void parser___ReduceAction117___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5306;
+  fra.me.meth = LOCATE_parser___ReduceAction117___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5308 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5309 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5310 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5311 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5312 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5313 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5314 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5315 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5316 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5318 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5318);
+  }
+  /* parser/parser.nit:5320 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5320);
+  }
+  /* parser/parser.nit:5322 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5322);
+  }
+  /* parser/parser.nit:5324 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5324);
+  }
+  /* parser/parser.nit:5326 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5326);
+  }
+  /* parser/parser.nit:5328 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5328);
+  }
+  /* parser/parser.nit:5330 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5330);
+  }
+  /* parser/parser.nit:5331 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5340 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5341 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5341);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction118___action[] = "parser::ReduceAction118::(parser::ReduceAction::action)";
+void parser___ReduceAction118___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5346;
+  fra.me.meth = LOCATE_parser___ReduceAction118___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5348 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5349 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5350 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5351 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5352 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5353 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5354 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5355 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5356 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5358 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5358);
+  }
+  /* parser/parser.nit:5360 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5360);
+  }
+  /* parser/parser.nit:5362 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5362);
+  }
+  /* parser/parser.nit:5364 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5364);
+  }
+  /* parser/parser.nit:5366 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5366);
+  }
+  /* parser/parser.nit:5368 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5368);
+  }
+  /* parser/parser.nit:5369 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5378 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5379 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5379);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction119___action[] = "parser::ReduceAction119::(parser::ReduceAction::action)";
+void parser___ReduceAction119___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5384;
+  fra.me.meth = LOCATE_parser___ReduceAction119___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5388 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5389 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5390 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5391 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5392 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5393 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5394 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5395 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5397 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5397);
+  }
+  /* parser/parser.nit:5399 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5399);
+  }
+  /* parser/parser.nit:5401 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5401);
+  }
+  /* parser/parser.nit:5403 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5403);
+  }
+  /* parser/parser.nit:5405 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5405);
+  }
+  /* parser/parser.nit:5407 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5407);
+  }
+  /* parser/parser.nit:5409 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5409);
+  }
+  /* parser/parser.nit:5410 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5419 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5420 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5420);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction120___action[] = "parser::ReduceAction120::(parser::ReduceAction::action)";
+void parser___ReduceAction120___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5425;
+  fra.me.meth = LOCATE_parser___ReduceAction120___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5427 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5428 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5429 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5430 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5432 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5433 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5434 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5435 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5437 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5437);
+  }
+  /* parser/parser.nit:5439 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5439);
+  }
+  /* parser/parser.nit:5441 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5441);
+  }
+  /* parser/parser.nit:5443 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5443);
+  }
+  /* parser/parser.nit:5445 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5445);
+  }
+  /* parser/parser.nit:5447 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5447);
+  }
+  /* parser/parser.nit:5448 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5457 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5458 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5458);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction121___action[] = "parser::ReduceAction121::(parser::ReduceAction::action)";
+void parser___ReduceAction121___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5463;
+  fra.me.meth = LOCATE_parser___ReduceAction121___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5465 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5466 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5467 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5468 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5469 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5470 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5471 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5472 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5473 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5474 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5476 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5476);
+  }
+  /* parser/parser.nit:5478 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5478);
+  }
+  /* parser/parser.nit:5480 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5480);
+  }
+  /* parser/parser.nit:5482 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5482);
+  }
+  /* parser/parser.nit:5484 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5484);
+  }
+  /* parser/parser.nit:5486 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5486);
+  }
+  /* parser/parser.nit:5488 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5488);
+  }
+  /* parser/parser.nit:5489 */
+  fra.me.REG[3] = NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5498 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5499 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5499);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction122___action[] = "parser::ReduceAction122::(parser::ReduceAction::action)";
+void parser___ReduceAction122___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5504;
+  fra.me.meth = LOCATE_parser___ReduceAction122___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5506 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5507 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5508 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5509 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5510 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5511 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5512 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5513 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5515 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5515);
+  }
+  /* parser/parser.nit:5517 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5517);
+  }
+  /* parser/parser.nit:5519 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5519);
+  }
+  /* parser/parser.nit:5521 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5521);
+  }
+  /* parser/parser.nit:5523 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5523);
+  }
+  /* parser/parser.nit:5524 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5532 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5533 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5533);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction123___action[] = "parser::ReduceAction123::(parser::ReduceAction::action)";
+void parser___ReduceAction123___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5538;
+  fra.me.meth = LOCATE_parser___ReduceAction123___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5540 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5541 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5542 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5543 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5544 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5545 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5546 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5547 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5548 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5550 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5550);
+  }
+  /* parser/parser.nit:5552 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5552);
+  }
+  /* parser/parser.nit:5554 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5554);
+  }
+  /* parser/parser.nit:5556 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5556);
+  }
+  /* parser/parser.nit:5558 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5558);
+  }
+  /* parser/parser.nit:5560 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5560);
+  }
+  /* parser/parser.nit:5561 */
+  fra.me.REG[3] = NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5569 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5570 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5570);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction124___action[] = "parser::ReduceAction124::(parser::ReduceAction::action)";
+void parser___ReduceAction124___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5575;
+  fra.me.meth = LOCATE_parser___ReduceAction124___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5577 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5578 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5579 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5580 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5581 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5582 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5583 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5584 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5586 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5586);
+  }
+  /* parser/parser.nit:5588 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5588);
+  }
+  /* parser/parser.nit:5590 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5590);
+  }
+  /* parser/parser.nit:5592 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5592);
+  }
+  /* parser/parser.nit:5594 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5594);
+  }
+  /* parser/parser.nit:5595 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5603 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5604 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5604);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction125___action[] = "parser::ReduceAction125::(parser::ReduceAction::action)";
+void parser___ReduceAction125___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5609;
+  fra.me.meth = LOCATE_parser___ReduceAction125___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5611 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5612 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5613 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5614 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5615 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5616 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5617 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5618 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5619 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5621 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5621);
+  }
+  /* parser/parser.nit:5623 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5623);
+  }
+  /* parser/parser.nit:5625 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5625);
+  }
+  /* parser/parser.nit:5627 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5627);
+  }
+  /* parser/parser.nit:5629 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5629);
+  }
+  /* parser/parser.nit:5631 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5631);
+  }
+  /* parser/parser.nit:5632 */
+  fra.me.REG[3] = NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:5640 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5641 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5641);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction126___action[] = "parser::ReduceAction126::(parser::ReduceAction::action)";
+void parser___ReduceAction126___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5646;
+  fra.me.meth = LOCATE_parser___ReduceAction126___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5648 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5649 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5650 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5651 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5652 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5653 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5654 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5655 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5657 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5657);
+  }
+  /* parser/parser.nit:5659 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5659);
+  }
+  /* parser/parser.nit:5661 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5661);
+  }
+  /* parser/parser.nit:5663 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5663);
+  }
+  /* parser/parser.nit:5665 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5665);
+  }
+  /* parser/parser.nit:5666 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:5677 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5678 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5678);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction127___action[] = "parser::ReduceAction127::(parser::ReduceAction::action)";
+void parser___ReduceAction127___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5683;
+  fra.me.meth = LOCATE_parser___ReduceAction127___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5685 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5686 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5687 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5688 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5689 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5690 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5691 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5692 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5693 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5695 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5695);
+  }
+  /* parser/parser.nit:5697 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5697);
+  }
+  /* parser/parser.nit:5699 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5699);
+  }
+  /* parser/parser.nit:5701 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5701);
+  }
+  /* parser/parser.nit:5703 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5703);
+  }
+  /* parser/parser.nit:5705 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5705);
+  }
+  /* parser/parser.nit:5706 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:5717 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5718 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5718);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction128___action[] = "parser::ReduceAction128::(parser::ReduceAction::action)";
+void parser___ReduceAction128___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5723;
+  fra.me.meth = LOCATE_parser___ReduceAction128___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5725 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5726 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5727 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5728 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5729 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5730 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5731 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5732 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5733 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5735 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5735);
+  }
+  /* parser/parser.nit:5737 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5737);
+  }
+  /* parser/parser.nit:5739 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5739);
+  }
+  /* parser/parser.nit:5741 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5741);
+  }
+  /* parser/parser.nit:5743 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5743);
+  }
+  /* parser/parser.nit:5745 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5745);
+  }
+  /* parser/parser.nit:5746 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:5757 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5758 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5758);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction129___action[] = "parser::ReduceAction129::(parser::ReduceAction::action)";
+void parser___ReduceAction129___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5763;
+  fra.me.meth = LOCATE_parser___ReduceAction129___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5765 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5766 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5767 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5768 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5769 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5770 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5771 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5772 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5773 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5774 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5776 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5776);
+  }
+  /* parser/parser.nit:5778 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5778);
+  }
+  /* parser/parser.nit:5780 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5780);
+  }
+  /* parser/parser.nit:5782 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5782);
+  }
+  /* parser/parser.nit:5784 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5784);
+  }
+  /* parser/parser.nit:5786 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5786);
+  }
+  /* parser/parser.nit:5788 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5788);
+  }
+  /* parser/parser.nit:5789 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:5800 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5801 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5801);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction130___action[] = "parser::ReduceAction130::(parser::ReduceAction::action)";
+void parser___ReduceAction130___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5806;
+  fra.me.meth = LOCATE_parser___ReduceAction130___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5808 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5809 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5810 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5811 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5812 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5813 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5814 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5815 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5816 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5818 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5818);
+  }
+  /* parser/parser.nit:5820 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5820);
+  }
+  /* parser/parser.nit:5822 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5822);
+  }
+  /* parser/parser.nit:5824 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5824);
+  }
+  /* parser/parser.nit:5826 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5826);
+  }
+  /* parser/parser.nit:5828 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5828);
+  }
+  /* parser/parser.nit:5829 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:5840 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5841 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5841);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction131___action[] = "parser::ReduceAction131::(parser::ReduceAction::action)";
+void parser___ReduceAction131___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5846;
+  fra.me.meth = LOCATE_parser___ReduceAction131___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5848 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5849 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5850 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5851 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5852 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5853 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5854 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5855 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5856 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5857 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5859 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5859);
+  }
+  /* parser/parser.nit:5861 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5861);
+  }
+  /* parser/parser.nit:5863 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5863);
+  }
+  /* parser/parser.nit:5865 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5865);
+  }
+  /* parser/parser.nit:5867 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5867);
+  }
+  /* parser/parser.nit:5869 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5869);
+  }
+  /* parser/parser.nit:5871 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5871);
+  }
+  /* parser/parser.nit:5872 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:5883 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5884 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5884);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction132___action[] = "parser::ReduceAction132::(parser::ReduceAction::action)";
+void parser___ReduceAction132___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5889;
+  fra.me.meth = LOCATE_parser___ReduceAction132___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5891 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5892 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5893 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5894 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5895 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5896 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5897 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5898 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5899 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5900 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5902 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5902);
+  }
+  /* parser/parser.nit:5904 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5904);
+  }
+  /* parser/parser.nit:5906 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5906);
+  }
+  /* parser/parser.nit:5908 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5908);
+  }
+  /* parser/parser.nit:5910 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5910);
+  }
+  /* parser/parser.nit:5912 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5912);
+  }
+  /* parser/parser.nit:5914 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5914);
+  }
+  /* parser/parser.nit:5915 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:5926 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5927 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5927);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction133___action[] = "parser::ReduceAction133::(parser::ReduceAction::action)";
+void parser___ReduceAction133___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5932;
+  fra.me.meth = LOCATE_parser___ReduceAction133___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5934 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5935 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5936 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5937 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5938 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5939 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5940 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5941 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5942 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5943 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5944 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5946 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5946);
+  }
+  /* parser/parser.nit:5948 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5948);
+  }
+  /* parser/parser.nit:5950 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5950);
+  }
+  /* parser/parser.nit:5952 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5952);
+  }
+  /* parser/parser.nit:5954 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5954);
+  }
+  /* parser/parser.nit:5956 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5956);
+  }
+  /* parser/parser.nit:5958 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5958);
+  }
+  /* parser/parser.nit:5960 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5960);
+  }
+  /* parser/parser.nit:5961 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:5972 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:5973 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5973);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction134___action[] = "parser::ReduceAction134::(parser::ReduceAction::action)";
+void parser___ReduceAction134___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 5978;
+  fra.me.meth = LOCATE_parser___ReduceAction134___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:5980 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:5981 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5982 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5983 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5984 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5985 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5986 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5987 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5988 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:5990 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5990);
+  }
+  /* parser/parser.nit:5992 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5992);
+  }
+  /* parser/parser.nit:5994 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5994);
+  }
+  /* parser/parser.nit:5996 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5996);
+  }
+  /* parser/parser.nit:5998 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5998);
+  }
+  /* parser/parser.nit:6000 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6000);
+  }
+  /* parser/parser.nit:6001 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6012 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6013 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6013);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction135___action[] = "parser::ReduceAction135::(parser::ReduceAction::action)";
+void parser___ReduceAction135___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6018;
+  fra.me.meth = LOCATE_parser___ReduceAction135___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6020 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6021 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6022 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6023 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6024 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6025 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6026 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6027 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6028 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6029 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6031 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6031);
+  }
+  /* parser/parser.nit:6033 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6033);
+  }
+  /* parser/parser.nit:6035 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6035);
+  }
+  /* parser/parser.nit:6037 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6037);
+  }
+  /* parser/parser.nit:6039 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6039);
+  }
+  /* parser/parser.nit:6041 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6041);
+  }
+  /* parser/parser.nit:6043 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6043);
+  }
+  /* parser/parser.nit:6044 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6055 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6056 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6056);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction136___action[] = "parser::ReduceAction136::(parser::ReduceAction::action)";
+void parser___ReduceAction136___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6061;
+  fra.me.meth = LOCATE_parser___ReduceAction136___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6063 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6064 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6065 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6066 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6067 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6068 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6069 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6070 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6071 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6072 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6074 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6074);
+  }
+  /* parser/parser.nit:6076 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6076);
+  }
+  /* parser/parser.nit:6078 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6078);
+  }
+  /* parser/parser.nit:6080 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6080);
+  }
+  /* parser/parser.nit:6082 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6082);
+  }
+  /* parser/parser.nit:6084 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6084);
+  }
+  /* parser/parser.nit:6086 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6086);
+  }
+  /* parser/parser.nit:6087 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6098 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6099 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6099);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction137___action[] = "parser::ReduceAction137::(parser::ReduceAction::action)";
+void parser___ReduceAction137___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6104;
+  fra.me.meth = LOCATE_parser___ReduceAction137___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6106 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6107 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6108 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6109 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6110 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6111 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6112 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6113 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6114 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6115 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6116 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6118 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6118);
+  }
+  /* parser/parser.nit:6120 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6120);
+  }
+  /* parser/parser.nit:6122 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6122);
+  }
+  /* parser/parser.nit:6124 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6124);
+  }
+  /* parser/parser.nit:6126 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6126);
+  }
+  /* parser/parser.nit:6128 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6128);
+  }
+  /* parser/parser.nit:6130 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6130);
+  }
+  /* parser/parser.nit:6132 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6132);
+  }
+  /* parser/parser.nit:6133 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6144 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6145 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6145);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction138___action[] = "parser::ReduceAction138::(parser::ReduceAction::action)";
+void parser___ReduceAction138___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6150;
+  fra.me.meth = LOCATE_parser___ReduceAction138___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6152 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6153 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6154 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6155 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6156 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6157 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6158 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6159 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6160 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6161 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6163 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6163);
+  }
+  /* parser/parser.nit:6165 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6165);
+  }
+  /* parser/parser.nit:6167 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6167);
+  }
+  /* parser/parser.nit:6169 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6169);
+  }
+  /* parser/parser.nit:6171 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6171);
+  }
+  /* parser/parser.nit:6173 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6173);
+  }
+  /* parser/parser.nit:6175 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6175);
+  }
+  /* parser/parser.nit:6176 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6187 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6188 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6188);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction139___action[] = "parser::ReduceAction139::(parser::ReduceAction::action)";
+void parser___ReduceAction139___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6193;
+  fra.me.meth = LOCATE_parser___ReduceAction139___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6195 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6196 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6197 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6198 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6199 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6200 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6201 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6202 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6203 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6204 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6205 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6207 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6207);
+  }
+  /* parser/parser.nit:6209 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6209);
+  }
+  /* parser/parser.nit:6211 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6211);
+  }
+  /* parser/parser.nit:6213 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6213);
+  }
+  /* parser/parser.nit:6215 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6215);
+  }
+  /* parser/parser.nit:6217 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6217);
+  }
+  /* parser/parser.nit:6219 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6219);
+  }
+  /* parser/parser.nit:6221 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6221);
+  }
+  /* parser/parser.nit:6222 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6233 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6234 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6234);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction140___action[] = "parser::ReduceAction140::(parser::ReduceAction::action)";
+void parser___ReduceAction140___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6239;
+  fra.me.meth = LOCATE_parser___ReduceAction140___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6241 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6242 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6243 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6244 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6245 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6246 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6247 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6248 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6249 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6250 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6251 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6253 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6253);
+  }
+  /* parser/parser.nit:6255 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6255);
+  }
+  /* parser/parser.nit:6257 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6257);
+  }
+  /* parser/parser.nit:6259 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6259);
+  }
+  /* parser/parser.nit:6261 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6261);
+  }
+  /* parser/parser.nit:6263 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6263);
+  }
+  /* parser/parser.nit:6265 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6265);
+  }
+  /* parser/parser.nit:6267 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6267);
+  }
+  /* parser/parser.nit:6268 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6279 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6280 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6280);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction141___action[] = "parser::ReduceAction141::(parser::ReduceAction::action)";
+void parser___ReduceAction141___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6285;
+  fra.me.meth = LOCATE_parser___ReduceAction141___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6287 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6288 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6289 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6290 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6291 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6292 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6293 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6294 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6295 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6296 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6297 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6298 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6300 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6300);
+  }
+  /* parser/parser.nit:6302 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6302);
+  }
+  /* parser/parser.nit:6304 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6304);
+  }
+  /* parser/parser.nit:6306 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6306);
+  }
+  /* parser/parser.nit:6308 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6308);
+  }
+  /* parser/parser.nit:6310 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6310);
+  }
+  /* parser/parser.nit:6312 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6312);
+  }
+  /* parser/parser.nit:6314 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6314);
+  }
+  /* parser/parser.nit:6316 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6316);
+  }
+  /* parser/parser.nit:6317 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6328 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6329 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6329);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction142___action[] = "parser::ReduceAction142::(parser::ReduceAction::action)";
+void parser___ReduceAction142___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6334;
+  fra.me.meth = LOCATE_parser___ReduceAction142___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6336 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6337 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6338 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6339 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6340 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6341 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6342 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6344 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6344);
+  }
+  /* parser/parser.nit:6346 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6346);
+  }
+  /* parser/parser.nit:6348 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6348);
+  }
+  /* parser/parser.nit:6350 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6350);
+  }
+  /* parser/parser.nit:6352 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6352);
+  }
+  /* parser/parser.nit:6354 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6354);
+  }
+  /* parser/parser.nit:6355 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6366 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6367 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6367);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction143___action[] = "parser::ReduceAction143::(parser::ReduceAction::action)";
+void parser___ReduceAction143___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6372;
+  fra.me.meth = LOCATE_parser___ReduceAction143___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6374 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6375 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6377 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6378 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6379 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6380 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6381 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6383 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6383);
+  }
+  /* parser/parser.nit:6385 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6385);
+  }
+  /* parser/parser.nit:6387 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6387);
+  }
+  /* parser/parser.nit:6389 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6389);
+  }
+  /* parser/parser.nit:6391 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6391);
+  }
+  /* parser/parser.nit:6393 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6393);
+  }
+  /* parser/parser.nit:6395 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6395);
+  }
+  /* parser/parser.nit:6396 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:6407 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6408 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6408);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction144___action[] = "parser::ReduceAction144::(parser::ReduceAction::action)";
+void parser___ReduceAction144___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6413;
+  fra.me.meth = LOCATE_parser___ReduceAction144___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6415 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6416 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6417 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6418 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6419 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6420 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6421 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6422 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6424 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6424);
+  }
+  /* parser/parser.nit:6426 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6426);
+  }
+  /* parser/parser.nit:6428 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6428);
+  }
+  /* parser/parser.nit:6430 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6430);
+  }
+  /* parser/parser.nit:6432 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6432);
+  }
+  /* parser/parser.nit:6434 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6434);
+  }
+  /* parser/parser.nit:6436 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6436);
+  }
+  /* parser/parser.nit:6437 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6448 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6449 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6449);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction145___action[] = "parser::ReduceAction145::(parser::ReduceAction::action)";
+void parser___ReduceAction145___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6454;
+  fra.me.meth = LOCATE_parser___ReduceAction145___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6456 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6457 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6458 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6459 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6460 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6461 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6462 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6463 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6464 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6466 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6466);
+  }
+  /* parser/parser.nit:6468 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6468);
+  }
+  /* parser/parser.nit:6470 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6470);
+  }
+  /* parser/parser.nit:6472 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6472);
+  }
+  /* parser/parser.nit:6474 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6474);
+  }
+  /* parser/parser.nit:6476 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6476);
+  }
+  /* parser/parser.nit:6478 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6478);
+  }
+  /* parser/parser.nit:6480 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6480);
+  }
+  /* parser/parser.nit:6481 */
+  fra.me.REG[3] = NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:6492 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6493 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6493);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction146___action[] = "parser::ReduceAction146::(parser::ReduceAction::action)";
+void parser___ReduceAction146___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6498;
+  fra.me.meth = LOCATE_parser___ReduceAction146___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6500 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6501 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6502 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6503 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6504 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6506 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6506);
+  }
+  /* parser/parser.nit:6508 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6508);
+  }
+  /* parser/parser.nit:6510 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6510);
+  }
+  /* parser/parser.nit:6512 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6512);
+  }
+  /* parser/parser.nit:6513 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6525 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6526 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6526);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction147___action[] = "parser::ReduceAction147::(parser::ReduceAction::action)";
+void parser___ReduceAction147___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6531;
+  fra.me.meth = LOCATE_parser___ReduceAction147___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6533 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6534 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6535 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6536 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6537 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6538 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6540 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6540);
+  }
+  /* parser/parser.nit:6542 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6542);
+  }
+  /* parser/parser.nit:6544 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6544);
+  }
+  /* parser/parser.nit:6546 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6546);
+  }
+  /* parser/parser.nit:6548 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6548);
+  }
+  /* parser/parser.nit:6549 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6561 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6562 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6562);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction148___action[] = "parser::ReduceAction148::(parser::ReduceAction::action)";
+void parser___ReduceAction148___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6567;
+  fra.me.meth = LOCATE_parser___ReduceAction148___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6569 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6570 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6571 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6572 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6573 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6574 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6576 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6576);
+  }
+  /* parser/parser.nit:6578 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6578);
+  }
+  /* parser/parser.nit:6580 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6580);
+  }
+  /* parser/parser.nit:6582 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6582);
+  }
+  /* parser/parser.nit:6584 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6584);
+  }
+  /* parser/parser.nit:6585 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], fra.me.REG[6], NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6597 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6598 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6598);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction149___action[] = "parser::ReduceAction149::(parser::ReduceAction::action)";
+void parser___ReduceAction149___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6603;
+  fra.me.meth = LOCATE_parser___ReduceAction149___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6605 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6606 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6607 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6608 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6609 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6610 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6611 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6613 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6613);
+  }
+  /* parser/parser.nit:6615 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6615);
+  }
+  /* parser/parser.nit:6617 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6617);
+  }
+  /* parser/parser.nit:6619 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6619);
+  }
+  /* parser/parser.nit:6621 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6621);
+  }
+  /* parser/parser.nit:6623 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6623);
+  }
+  /* parser/parser.nit:6624 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6636 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6637 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6637);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction150___action[] = "parser::ReduceAction150::(parser::ReduceAction::action)";
+void parser___ReduceAction150___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6642;
+  fra.me.meth = LOCATE_parser___ReduceAction150___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6644 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6645 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6646 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6647 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6648 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6649 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6651 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6651);
+  }
+  /* parser/parser.nit:6653 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6653);
+  }
+  /* parser/parser.nit:6655 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6655);
+  }
+  /* parser/parser.nit:6657 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6657);
+  }
+  /* parser/parser.nit:6659 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6659);
+  }
+  /* parser/parser.nit:6660 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6672 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6673 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6673);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction151___action[] = "parser::ReduceAction151::(parser::ReduceAction::action)";
+void parser___ReduceAction151___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6678;
+  fra.me.meth = LOCATE_parser___ReduceAction151___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6680 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6681 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6682 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6683 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6684 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6685 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6686 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6688 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6688);
+  }
+  /* parser/parser.nit:6690 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6690);
+  }
+  /* parser/parser.nit:6692 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6692);
+  }
+  /* parser/parser.nit:6694 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6694);
+  }
+  /* parser/parser.nit:6696 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6696);
+  }
+  /* parser/parser.nit:6698 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6698);
+  }
+  /* parser/parser.nit:6699 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6711 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6712 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6712);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction152___action[] = "parser::ReduceAction152::(parser::ReduceAction::action)";
+void parser___ReduceAction152___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6717;
+  fra.me.meth = LOCATE_parser___ReduceAction152___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6719 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6720 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6721 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6722 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6723 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6724 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6725 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6727 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6727);
+  }
+  /* parser/parser.nit:6729 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6729);
+  }
+  /* parser/parser.nit:6731 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6731);
+  }
+  /* parser/parser.nit:6733 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6733);
+  }
+  /* parser/parser.nit:6735 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6735);
+  }
+  /* parser/parser.nit:6737 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6737);
+  }
+  /* parser/parser.nit:6738 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6750 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6751 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6751);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction153___action[] = "parser::ReduceAction153::(parser::ReduceAction::action)";
+void parser___ReduceAction153___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6756;
+  fra.me.meth = LOCATE_parser___ReduceAction153___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6758 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6759 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6760 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6761 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6762 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6763 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6764 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6765 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6767 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6767);
+  }
+  /* parser/parser.nit:6769 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6769);
+  }
+  /* parser/parser.nit:6771 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6771);
+  }
+  /* parser/parser.nit:6773 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6773);
+  }
+  /* parser/parser.nit:6775 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6775);
+  }
+  /* parser/parser.nit:6777 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6777);
+  }
+  /* parser/parser.nit:6779 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6779);
+  }
+  /* parser/parser.nit:6780 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:6792 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6793 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6793);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction154___action[] = "parser::ReduceAction154::(parser::ReduceAction::action)";
+void parser___ReduceAction154___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6798;
+  fra.me.meth = LOCATE_parser___ReduceAction154___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6800 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6801 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6802 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6803 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6804 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6805 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6807 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6807);
+  }
+  /* parser/parser.nit:6809 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6809);
+  }
+  /* parser/parser.nit:6811 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6811);
+  }
+  /* parser/parser.nit:6813 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6813);
+  }
+  /* parser/parser.nit:6815 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6815);
+  }
+  /* parser/parser.nit:6816 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:6828 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6829 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6829);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction155___action[] = "parser::ReduceAction155::(parser::ReduceAction::action)";
+void parser___ReduceAction155___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6834;
+  fra.me.meth = LOCATE_parser___ReduceAction155___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6836 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6837 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6838 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6839 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6840 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6841 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6842 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6844 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6844);
+  }
+  /* parser/parser.nit:6846 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6846);
+  }
+  /* parser/parser.nit:6848 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6848);
+  }
+  /* parser/parser.nit:6850 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6850);
+  }
+  /* parser/parser.nit:6852 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6852);
+  }
+  /* parser/parser.nit:6854 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6854);
+  }
+  /* parser/parser.nit:6855 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:6867 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6868 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6868);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction156___action[] = "parser::ReduceAction156::(parser::ReduceAction::action)";
+void parser___ReduceAction156___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6873;
+  fra.me.meth = LOCATE_parser___ReduceAction156___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6875 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6876 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6877 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6878 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6879 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6880 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6881 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6883 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6883);
+  }
+  /* parser/parser.nit:6885 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6885);
+  }
+  /* parser/parser.nit:6887 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6887);
+  }
+  /* parser/parser.nit:6889 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6889);
+  }
+  /* parser/parser.nit:6891 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6891);
+  }
+  /* parser/parser.nit:6893 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6893);
+  }
+  /* parser/parser.nit:6894 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:6906 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6907 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6907);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction157___action[] = "parser::ReduceAction157::(parser::ReduceAction::action)";
+void parser___ReduceAction157___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6912;
+  fra.me.meth = LOCATE_parser___ReduceAction157___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6914 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6915 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6916 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6917 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6918 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6919 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6920 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6921 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6923 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6923);
+  }
+  /* parser/parser.nit:6925 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6925);
+  }
+  /* parser/parser.nit:6927 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6927);
+  }
+  /* parser/parser.nit:6929 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6929);
+  }
+  /* parser/parser.nit:6931 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6931);
+  }
+  /* parser/parser.nit:6933 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6933);
+  }
+  /* parser/parser.nit:6935 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6935);
+  }
+  /* parser/parser.nit:6936 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:6948 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6949 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6949);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction158___action[] = "parser::ReduceAction158::(parser::ReduceAction::action)";
+void parser___ReduceAction158___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6954;
+  fra.me.meth = LOCATE_parser___ReduceAction158___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6956 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6957 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6958 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6959 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6960 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6961 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6962 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6964 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6964);
+  }
+  /* parser/parser.nit:6966 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6966);
+  }
+  /* parser/parser.nit:6968 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6968);
+  }
+  /* parser/parser.nit:6970 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6970);
+  }
+  /* parser/parser.nit:6972 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6972);
+  }
+  /* parser/parser.nit:6974 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6974);
+  }
+  /* parser/parser.nit:6975 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:6987 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:6988 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6988);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction159___action[] = "parser::ReduceAction159::(parser::ReduceAction::action)";
+void parser___ReduceAction159___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 6993;
+  fra.me.meth = LOCATE_parser___ReduceAction159___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:6995 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:6996 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6997 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6998 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:6999 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7000 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7001 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7002 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7004 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7004);
+  }
+  /* parser/parser.nit:7006 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7006);
+  }
+  /* parser/parser.nit:7008 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7008);
+  }
+  /* parser/parser.nit:7010 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7010);
+  }
+  /* parser/parser.nit:7012 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7012);
+  }
+  /* parser/parser.nit:7014 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7014);
+  }
+  /* parser/parser.nit:7016 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7016);
+  }
+  /* parser/parser.nit:7017 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7029 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7030 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7030);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction160___action[] = "parser::ReduceAction160::(parser::ReduceAction::action)";
+void parser___ReduceAction160___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7035;
+  fra.me.meth = LOCATE_parser___ReduceAction160___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7037 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7038 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7039 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7040 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7041 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7042 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7043 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7044 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7046 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7046);
+  }
+  /* parser/parser.nit:7048 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7048);
+  }
+  /* parser/parser.nit:7050 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7050);
+  }
+  /* parser/parser.nit:7052 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7052);
+  }
+  /* parser/parser.nit:7054 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7054);
+  }
+  /* parser/parser.nit:7056 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7056);
+  }
+  /* parser/parser.nit:7058 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7058);
+  }
+  /* parser/parser.nit:7059 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7071 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7072 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7072);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction161___action[] = "parser::ReduceAction161::(parser::ReduceAction::action)";
+void parser___ReduceAction161___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7077;
+  fra.me.meth = LOCATE_parser___ReduceAction161___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7079 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7080 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7081 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7082 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7083 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7084 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7085 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7086 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7087 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7089 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7089);
+  }
+  /* parser/parser.nit:7091 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7091);
+  }
+  /* parser/parser.nit:7093 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7093);
+  }
+  /* parser/parser.nit:7095 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7095);
+  }
+  /* parser/parser.nit:7097 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7097);
+  }
+  /* parser/parser.nit:7099 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7099);
+  }
+  /* parser/parser.nit:7101 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7101);
+  }
+  /* parser/parser.nit:7103 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7103);
+  }
+  /* parser/parser.nit:7104 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7116 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7117 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7117);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction162___action[] = "parser::ReduceAction162::(parser::ReduceAction::action)";
+void parser___ReduceAction162___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7122;
+  fra.me.meth = LOCATE_parser___ReduceAction162___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7124 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7125 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7126 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7127 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7128 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7129 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7130 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7131 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7133 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7133);
+  }
+  /* parser/parser.nit:7135 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7135);
+  }
+  /* parser/parser.nit:7137 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7137);
+  }
+  /* parser/parser.nit:7139 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7139);
+  }
+  /* parser/parser.nit:7141 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7141);
+  }
+  /* parser/parser.nit:7142 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7154 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7155 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7155);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction163___action[] = "parser::ReduceAction163::(parser::ReduceAction::action)";
+void parser___ReduceAction163___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7160;
+  fra.me.meth = LOCATE_parser___ReduceAction163___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7162 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7163 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7164 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7165 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7166 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7167 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7168 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7169 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7170 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7172 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7172);
+  }
+  /* parser/parser.nit:7174 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7174);
+  }
+  /* parser/parser.nit:7176 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7176);
+  }
+  /* parser/parser.nit:7178 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7178);
+  }
+  /* parser/parser.nit:7180 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7180);
+  }
+  /* parser/parser.nit:7182 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7182);
+  }
+  /* parser/parser.nit:7183 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7195 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7196 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7196);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction164___action[] = "parser::ReduceAction164::(parser::ReduceAction::action)";
+void parser___ReduceAction164___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7201;
+  fra.me.meth = LOCATE_parser___ReduceAction164___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7203 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7204 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7205 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7206 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7207 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7208 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7209 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7210 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7211 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7213 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7213);
+  }
+  /* parser/parser.nit:7215 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7215);
+  }
+  /* parser/parser.nit:7217 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7217);
+  }
+  /* parser/parser.nit:7219 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7219);
+  }
+  /* parser/parser.nit:7221 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7221);
+  }
+  /* parser/parser.nit:7223 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7223);
+  }
+  /* parser/parser.nit:7224 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7236 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7237 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7237);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction165___action[] = "parser::ReduceAction165::(parser::ReduceAction::action)";
+void parser___ReduceAction165___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7242;
+  fra.me.meth = LOCATE_parser___ReduceAction165___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7244 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7245 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7246 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7247 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7248 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7249 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7250 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7251 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7252 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7253 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7255 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7255);
+  }
+  /* parser/parser.nit:7257 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7257);
+  }
+  /* parser/parser.nit:7259 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7259);
+  }
+  /* parser/parser.nit:7261 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7261);
+  }
+  /* parser/parser.nit:7263 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7263);
+  }
+  /* parser/parser.nit:7265 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7265);
+  }
+  /* parser/parser.nit:7267 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7267);
+  }
+  /* parser/parser.nit:7268 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7280 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7281 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7281);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction166___action[] = "parser::ReduceAction166::(parser::ReduceAction::action)";
+void parser___ReduceAction166___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7286;
+  fra.me.meth = LOCATE_parser___ReduceAction166___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7288 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7289 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7290 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7291 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7292 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7293 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7294 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7295 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7296 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7298 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7298);
+  }
+  /* parser/parser.nit:7300 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7300);
+  }
+  /* parser/parser.nit:7302 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7302);
+  }
+  /* parser/parser.nit:7304 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7304);
+  }
+  /* parser/parser.nit:7306 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7306);
+  }
+  /* parser/parser.nit:7308 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7308);
+  }
+  /* parser/parser.nit:7309 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7321 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7322 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7322);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction167___action[] = "parser::ReduceAction167::(parser::ReduceAction::action)";
+void parser___ReduceAction167___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7327;
+  fra.me.meth = LOCATE_parser___ReduceAction167___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7329 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7330 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7331 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7332 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7333 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7334 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7335 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7336 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7337 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7338 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7340 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7340);
+  }
+  /* parser/parser.nit:7342 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7342);
+  }
+  /* parser/parser.nit:7344 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7344);
+  }
+  /* parser/parser.nit:7346 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7346);
+  }
+  /* parser/parser.nit:7348 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7348);
+  }
+  /* parser/parser.nit:7350 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7350);
+  }
+  /* parser/parser.nit:7352 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7352);
+  }
+  /* parser/parser.nit:7353 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7365 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7366 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7366);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction168___action[] = "parser::ReduceAction168::(parser::ReduceAction::action)";
+void parser___ReduceAction168___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7371;
+  fra.me.meth = LOCATE_parser___ReduceAction168___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7373 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7374 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7375 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7377 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7378 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7379 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7380 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7381 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7382 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7384 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7384);
+  }
+  /* parser/parser.nit:7386 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7386);
+  }
+  /* parser/parser.nit:7388 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7388);
+  }
+  /* parser/parser.nit:7390 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7390);
+  }
+  /* parser/parser.nit:7392 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7392);
+  }
+  /* parser/parser.nit:7394 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7394);
+  }
+  /* parser/parser.nit:7396 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7396);
+  }
+  /* parser/parser.nit:7397 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7409 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7410 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7410);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction169___action[] = "parser::ReduceAction169::(parser::ReduceAction::action)";
+void parser___ReduceAction169___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7415;
+  fra.me.meth = LOCATE_parser___ReduceAction169___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7417 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7418 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7419 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7420 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7421 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7422 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7423 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7424 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7425 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7426 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7427 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7429 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7429);
+  }
+  /* parser/parser.nit:7431 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7431);
+  }
+  /* parser/parser.nit:7433 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7433);
+  }
+  /* parser/parser.nit:7435 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7435);
+  }
+  /* parser/parser.nit:7437 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7437);
+  }
+  /* parser/parser.nit:7439 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7439);
+  }
+  /* parser/parser.nit:7441 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7441);
+  }
+  /* parser/parser.nit:7443 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7443);
+  }
+  /* parser/parser.nit:7444 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:7456 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7457 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7457);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction170___action[] = "parser::ReduceAction170::(parser::ReduceAction::action)";
+void parser___ReduceAction170___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7462;
+  fra.me.meth = LOCATE_parser___ReduceAction170___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7464 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7465 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7466 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7467 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7468 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7469 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7470 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7471 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7472 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7474 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7474);
+  }
+  /* parser/parser.nit:7476 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7476);
+  }
+  /* parser/parser.nit:7478 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7478);
+  }
+  /* parser/parser.nit:7480 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7480);
+  }
+  /* parser/parser.nit:7482 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7482);
+  }
+  /* parser/parser.nit:7484 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7484);
+  }
+  /* parser/parser.nit:7485 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7497 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7498 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7498);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction171___action[] = "parser::ReduceAction171::(parser::ReduceAction::action)";
+void parser___ReduceAction171___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7503;
+  fra.me.meth = LOCATE_parser___ReduceAction171___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7505 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7506 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7507 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7508 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7509 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7510 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7511 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7512 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7513 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7514 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7516 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7516);
+  }
+  /* parser/parser.nit:7518 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7518);
+  }
+  /* parser/parser.nit:7520 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7520);
+  }
+  /* parser/parser.nit:7522 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7522);
+  }
+  /* parser/parser.nit:7524 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7524);
+  }
+  /* parser/parser.nit:7526 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7526);
+  }
+  /* parser/parser.nit:7528 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7528);
+  }
+  /* parser/parser.nit:7529 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7541 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7542 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7542);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction172___action[] = "parser::ReduceAction172::(parser::ReduceAction::action)";
+void parser___ReduceAction172___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7547;
+  fra.me.meth = LOCATE_parser___ReduceAction172___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7549 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7550 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7551 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7552 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7553 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7554 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7555 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7556 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7557 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7558 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7560 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7560);
+  }
+  /* parser/parser.nit:7562 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7562);
+  }
+  /* parser/parser.nit:7564 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7564);
+  }
+  /* parser/parser.nit:7566 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7566);
+  }
+  /* parser/parser.nit:7568 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7568);
+  }
+  /* parser/parser.nit:7570 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7570);
+  }
+  /* parser/parser.nit:7572 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7572);
+  }
+  /* parser/parser.nit:7573 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7585 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7586 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7586);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction173___action[] = "parser::ReduceAction173::(parser::ReduceAction::action)";
+void parser___ReduceAction173___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7591;
+  fra.me.meth = LOCATE_parser___ReduceAction173___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7593 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7594 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7595 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7596 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7597 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7598 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7599 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7600 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7601 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7602 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7603 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7605 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7605);
+  }
+  /* parser/parser.nit:7607 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7607);
+  }
+  /* parser/parser.nit:7609 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7609);
+  }
+  /* parser/parser.nit:7611 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7611);
+  }
+  /* parser/parser.nit:7613 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7613);
+  }
+  /* parser/parser.nit:7615 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7615);
+  }
+  /* parser/parser.nit:7617 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7617);
+  }
+  /* parser/parser.nit:7619 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7619);
+  }
+  /* parser/parser.nit:7620 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7632 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7633 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7633);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction174___action[] = "parser::ReduceAction174::(parser::ReduceAction::action)";
+void parser___ReduceAction174___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7638;
+  fra.me.meth = LOCATE_parser___ReduceAction174___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7640 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7641 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7642 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7643 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7644 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7645 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7646 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7647 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7648 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7649 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7651 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7651);
+  }
+  /* parser/parser.nit:7653 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7653);
+  }
+  /* parser/parser.nit:7655 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7655);
+  }
+  /* parser/parser.nit:7657 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7657);
+  }
+  /* parser/parser.nit:7659 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7659);
+  }
+  /* parser/parser.nit:7661 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7661);
+  }
+  /* parser/parser.nit:7663 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7663);
+  }
+  /* parser/parser.nit:7664 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7676 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7677 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7677);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction175___action[] = "parser::ReduceAction175::(parser::ReduceAction::action)";
+void parser___ReduceAction175___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7682;
+  fra.me.meth = LOCATE_parser___ReduceAction175___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7684 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7685 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7686 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7687 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7688 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7689 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7690 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7691 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7692 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7693 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7694 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7696 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7696);
+  }
+  /* parser/parser.nit:7698 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7698);
+  }
+  /* parser/parser.nit:7700 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7700);
+  }
+  /* parser/parser.nit:7702 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7702);
+  }
+  /* parser/parser.nit:7704 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7704);
+  }
+  /* parser/parser.nit:7706 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
+  }
+  /* parser/parser.nit:7708 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7708);
+  }
+  /* parser/parser.nit:7710 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7710);
+  }
+  /* parser/parser.nit:7711 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7723 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7724 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7724);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction176___action[] = "parser::ReduceAction176::(parser::ReduceAction::action)";
+void parser___ReduceAction176___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7729;
+  fra.me.meth = LOCATE_parser___ReduceAction176___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7731 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7732 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7733 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7734 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7735 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7736 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7737 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7738 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7739 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7740 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7741 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7743 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7743);
+  }
+  /* parser/parser.nit:7745 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7745);
+  }
+  /* parser/parser.nit:7747 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7747);
+  }
+  /* parser/parser.nit:7749 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7749);
+  }
+  /* parser/parser.nit:7751 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7751);
+  }
+  /* parser/parser.nit:7753 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7753);
+  }
+  /* parser/parser.nit:7755 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7755);
+  }
+  /* parser/parser.nit:7757 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7757);
+  }
+  /* parser/parser.nit:7758 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7770 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7771 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7771);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction177___action[] = "parser::ReduceAction177::(parser::ReduceAction::action)";
+void parser___ReduceAction177___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7776;
+  fra.me.meth = LOCATE_parser___ReduceAction177___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7778 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7779 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7780 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7781 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7782 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7783 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7784 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7785 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7786 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7787 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7788 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7789 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7791 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7791);
+  }
+  /* parser/parser.nit:7793 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7793);
+  }
+  /* parser/parser.nit:7795 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7795);
+  }
+  /* parser/parser.nit:7797 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7797);
+  }
+  /* parser/parser.nit:7799 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7799);
+  }
+  /* parser/parser.nit:7801 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7801);
+  }
+  /* parser/parser.nit:7803 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7803);
+  }
+  /* parser/parser.nit:7805 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7805);
+  }
+  /* parser/parser.nit:7807 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7807);
+  }
+  /* parser/parser.nit:7808 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:7820 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7821 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7821);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction178___action[] = "parser::ReduceAction178::(parser::ReduceAction::action)";
+void parser___ReduceAction178___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7826;
+  fra.me.meth = LOCATE_parser___ReduceAction178___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7828 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7829 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7830 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7831 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7832 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7834 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7834);
+  }
+  /* parser/parser.nit:7836 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7836);
+  }
+  /* parser/parser.nit:7838 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7838);
+  }
+  /* parser/parser.nit:7840 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7840);
+  }
+  /* parser/parser.nit:7841 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:7853 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7854 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7854);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction179___action[] = "parser::ReduceAction179::(parser::ReduceAction::action)";
+void parser___ReduceAction179___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7859;
+  fra.me.meth = LOCATE_parser___ReduceAction179___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7861 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7862 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7863 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7864 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7865 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7866 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7868 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7868);
+  }
+  /* parser/parser.nit:7870 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7870);
+  }
+  /* parser/parser.nit:7872 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7872);
+  }
+  /* parser/parser.nit:7874 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7874);
+  }
+  /* parser/parser.nit:7876 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7876);
+  }
+  /* parser/parser.nit:7877 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:7889 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7890 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7890);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction180___action[] = "parser::ReduceAction180::(parser::ReduceAction::action)";
+void parser___ReduceAction180___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7895;
+  fra.me.meth = LOCATE_parser___ReduceAction180___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7897 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7898 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7899 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7900 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7901 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7902 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7904 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7904);
+  }
+  /* parser/parser.nit:7906 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7906);
+  }
+  /* parser/parser.nit:7908 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7908);
+  }
+  /* parser/parser.nit:7910 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7910);
+  }
+  /* parser/parser.nit:7912 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7912);
+  }
+  /* parser/parser.nit:7913 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7925 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7926 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7926);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction181___action[] = "parser::ReduceAction181::(parser::ReduceAction::action)";
+void parser___ReduceAction181___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7931;
+  fra.me.meth = LOCATE_parser___ReduceAction181___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7933 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7934 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7935 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7936 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7937 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7938 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7939 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7941 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7941);
+  }
+  /* parser/parser.nit:7943 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7943);
+  }
+  /* parser/parser.nit:7945 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7945);
+  }
+  /* parser/parser.nit:7947 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7947);
+  }
+  /* parser/parser.nit:7949 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7949);
+  }
+  /* parser/parser.nit:7951 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7951);
+  }
+  /* parser/parser.nit:7952 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:7964 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:7965 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7965);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction182___action[] = "parser::ReduceAction182::(parser::ReduceAction::action)";
+void parser___ReduceAction182___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 7970;
+  fra.me.meth = LOCATE_parser___ReduceAction182___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:7972 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:7973 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7974 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7975 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7976 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7977 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:7979 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7979);
+  }
+  /* parser/parser.nit:7981 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7981);
+  }
+  /* parser/parser.nit:7983 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7983);
+  }
+  /* parser/parser.nit:7985 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7985);
+  }
+  /* parser/parser.nit:7987 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
+  }
+  /* parser/parser.nit:7988 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8000 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:8001 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8001);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction183___action[] = "parser::ReduceAction183::(parser::ReduceAction::action)";
+void parser___ReduceAction183___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8006;
+  fra.me.meth = LOCATE_parser___ReduceAction183___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8008 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8009 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8010 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8011 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8012 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8013 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8014 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8016 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8016);
+  }
+  /* parser/parser.nit:8018 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
+  }
+  /* parser/parser.nit:8020 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8020);
+  }
+  /* parser/parser.nit:8022 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8022);
+  }
+  /* parser/parser.nit:8024 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8024);
+  }
+  /* parser/parser.nit:8026 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8026);
+  }
+  /* parser/parser.nit:8027 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8039 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:8040 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8040);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction184___action[] = "parser::ReduceAction184::(parser::ReduceAction::action)";
+void parser___ReduceAction184___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8045;
+  fra.me.meth = LOCATE_parser___ReduceAction184___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8047 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8048 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8050 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8051 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8052 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8053 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8055 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8055);
+  }
+  /* parser/parser.nit:8057 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8057);
+  }
+  /* parser/parser.nit:8059 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8059);
+  }
+  /* parser/parser.nit:8061 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8061);
+  }
+  /* parser/parser.nit:8063 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8063);
+  }
+  /* parser/parser.nit:8065 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8065);
+  }
+  /* parser/parser.nit:8066 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:8078 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:8079 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8079);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction185___action[] = "parser::ReduceAction185::(parser::ReduceAction::action)";
+void parser___ReduceAction185___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8084;
+  fra.me.meth = LOCATE_parser___ReduceAction185___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8086 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8087 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8088 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8089 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8090 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8091 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8092 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8093 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8095 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8095);
+  }
+  /* parser/parser.nit:8097 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8097);
+  }
+  /* parser/parser.nit:8099 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8099);
+  }
+  /* parser/parser.nit:8101 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8101);
+  }
+  /* parser/parser.nit:8103 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8103);
+  }
+  /* parser/parser.nit:8105 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8105);
+  }
+  /* parser/parser.nit:8107 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8107);
+  }
+  /* parser/parser.nit:8108 */
+  fra.me.REG[4] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[3], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:8120 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:8121 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8121);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction186___action[] = "parser::ReduceAction186::(parser::ReduceAction::action)";
+void parser___ReduceAction186___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8126;
+  fra.me.meth = LOCATE_parser___ReduceAction186___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8128 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8129 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8130 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8131 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8132 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8133 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8134 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8135 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8137 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8137);
+  }
+  /* parser/parser.nit:8139 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8139);
+  }
+  /* parser/parser.nit:8141 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8141);
+  }
+  /* parser/parser.nit:8143 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8143);
+  }
+  /* parser/parser.nit:8145 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8145);
+  }
+  /* parser/parser.nit:8146 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8158 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8159 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8159);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction187___action[] = "parser::ReduceAction187::(parser::ReduceAction::action)";
+void parser___ReduceAction187___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8164;
+  fra.me.meth = LOCATE_parser___ReduceAction187___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8166 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8167 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8168 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8169 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8170 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8171 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8172 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8173 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8174 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8176 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8176);
+  }
+  /* parser/parser.nit:8178 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8178);
+  }
+  /* parser/parser.nit:8180 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8180);
+  }
+  /* parser/parser.nit:8182 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8182);
+  }
+  /* parser/parser.nit:8184 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8184);
+  }
+  /* parser/parser.nit:8186 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8186);
+  }
+  /* parser/parser.nit:8187 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8199 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8200 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8200);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction188___action[] = "parser::ReduceAction188::(parser::ReduceAction::action)";
+void parser___ReduceAction188___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8205;
+  fra.me.meth = LOCATE_parser___ReduceAction188___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8207 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8208 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8209 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8210 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8211 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8212 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8213 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8214 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8215 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8217 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8217);
+  }
+  /* parser/parser.nit:8219 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8219);
+  }
+  /* parser/parser.nit:8221 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8221);
+  }
+  /* parser/parser.nit:8223 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8223);
+  }
+  /* parser/parser.nit:8225 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8225);
+  }
+  /* parser/parser.nit:8227 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8227);
+  }
+  /* parser/parser.nit:8228 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8240 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8241 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8241);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction189___action[] = "parser::ReduceAction189::(parser::ReduceAction::action)";
+void parser___ReduceAction189___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8246;
+  fra.me.meth = LOCATE_parser___ReduceAction189___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8248 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8249 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8250 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8251 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8252 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8253 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8254 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8255 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8256 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8257 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8259 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8259);
+  }
+  /* parser/parser.nit:8261 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8261);
+  }
+  /* parser/parser.nit:8263 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8263);
+  }
+  /* parser/parser.nit:8265 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8265);
+  }
+  /* parser/parser.nit:8267 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8267);
+  }
+  /* parser/parser.nit:8269 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8269);
+  }
+  /* parser/parser.nit:8271 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8271);
+  }
+  /* parser/parser.nit:8272 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8284 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8285 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8285);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction190___action[] = "parser::ReduceAction190::(parser::ReduceAction::action)";
+void parser___ReduceAction190___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8290;
+  fra.me.meth = LOCATE_parser___ReduceAction190___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8292 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8293 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8294 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8295 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8296 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8297 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8298 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8299 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8300 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8302 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8302);
+  }
+  /* parser/parser.nit:8304 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
+  }
+  /* parser/parser.nit:8306 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
+  }
+  /* parser/parser.nit:8308 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8308);
+  }
+  /* parser/parser.nit:8310 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8310);
+  }
+  /* parser/parser.nit:8312 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8312);
+  }
+  /* parser/parser.nit:8313 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8325 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8326 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8326);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction191___action[] = "parser::ReduceAction191::(parser::ReduceAction::action)";
+void parser___ReduceAction191___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8331;
+  fra.me.meth = LOCATE_parser___ReduceAction191___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8333 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8334 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8335 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8336 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8337 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8338 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8339 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8340 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8341 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8342 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8344 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8344);
+  }
+  /* parser/parser.nit:8346 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8346);
+  }
+  /* parser/parser.nit:8348 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8348);
+  }
+  /* parser/parser.nit:8350 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8350);
+  }
+  /* parser/parser.nit:8352 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8352);
+  }
+  /* parser/parser.nit:8354 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8354);
+  }
+  /* parser/parser.nit:8356 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8356);
+  }
+  /* parser/parser.nit:8357 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:8369 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8370 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8370);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction192___action[] = "parser::ReduceAction192::(parser::ReduceAction::action)";
+void parser___ReduceAction192___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8375;
+  fra.me.meth = LOCATE_parser___ReduceAction192___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8377 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8378 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8379 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8380 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8381 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8382 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8383 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8384 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8385 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8386 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8388 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8388);
+  }
+  /* parser/parser.nit:8390 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8390);
+  }
+  /* parser/parser.nit:8392 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8392);
+  }
+  /* parser/parser.nit:8394 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8394);
+  }
+  /* parser/parser.nit:8396 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8396);
+  }
+  /* parser/parser.nit:8398 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8398);
+  }
+  /* parser/parser.nit:8400 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8400);
+  }
+  /* parser/parser.nit:8401 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:8413 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8414 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8414);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction193___action[] = "parser::ReduceAction193::(parser::ReduceAction::action)";
+void parser___ReduceAction193___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8419;
+  fra.me.meth = LOCATE_parser___ReduceAction193___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8421 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8422 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8423 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8424 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8425 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8426 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8427 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8428 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8429 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8430 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8431 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8433 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8433);
+  }
+  /* parser/parser.nit:8435 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAble, ID_parser___parser_nodes___AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8435);
+  }
+  /* parser/parser.nit:8437 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8437);
+  }
+  /* parser/parser.nit:8439 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8439);
+  }
+  /* parser/parser.nit:8441 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8441);
+  }
+  /* parser/parser.nit:8443 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8443);
+  }
+  /* parser/parser.nit:8445 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8445);
+  }
+  /* parser/parser.nit:8447 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8447);
+  }
+  /* parser/parser.nit:8448 */
+  fra.me.REG[3] = NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:8460 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8461 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8461);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction194___action[] = "parser::ReduceAction194::(parser::ReduceAction::action)";
+void parser___ReduceAction194___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8466;
+  fra.me.meth = LOCATE_parser___ReduceAction194___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8468 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8469 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8470 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8471 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8472 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8473 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8474 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8476 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8476);
+  }
+  /* parser/parser.nit:8478 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8478);
+  }
+  /* parser/parser.nit:8480 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8480);
+  }
+  /* parser/parser.nit:8482 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8482);
+  }
+  /* parser/parser.nit:8484 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8484);
+  }
+  /* parser/parser.nit:8485 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8494 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8495 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8495);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction195___action[] = "parser::ReduceAction195::(parser::ReduceAction::action)";
+void parser___ReduceAction195___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8500;
+  fra.me.meth = LOCATE_parser___ReduceAction195___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8502 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8503 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8504 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8505 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8506 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8507 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8508 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8509 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8511 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8511);
+  }
+  /* parser/parser.nit:8513 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8513);
+  }
+  /* parser/parser.nit:8515 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8515);
+  }
+  /* parser/parser.nit:8517 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8517);
+  }
+  /* parser/parser.nit:8519 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8519);
+  }
+  /* parser/parser.nit:8521 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
+  }
+  /* parser/parser.nit:8522 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8531 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8532 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8532);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction196___action[] = "parser::ReduceAction196::(parser::ReduceAction::action)";
+void parser___ReduceAction196___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8537;
+  fra.me.meth = LOCATE_parser___ReduceAction196___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8539 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8540 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8541 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8542 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8543 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8544 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8545 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8546 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8548 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8548);
+  }
+  /* parser/parser.nit:8550 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8550);
+  }
+  /* parser/parser.nit:8552 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8552);
+  }
+  /* parser/parser.nit:8554 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8554);
+  }
+  /* parser/parser.nit:8556 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8556);
+  }
+  /* parser/parser.nit:8558 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8558);
+  }
+  /* parser/parser.nit:8559 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8568 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8569 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8569);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction197___action[] = "parser::ReduceAction197::(parser::ReduceAction::action)";
+void parser___ReduceAction197___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8574;
+  fra.me.meth = LOCATE_parser___ReduceAction197___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8576 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8577 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8578 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8579 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8580 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8581 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8582 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8583 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8584 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8586 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8586);
+  }
+  /* parser/parser.nit:8588 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8588);
+  }
+  /* parser/parser.nit:8590 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8590);
+  }
+  /* parser/parser.nit:8592 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8592);
+  }
+  /* parser/parser.nit:8594 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8594);
+  }
+  /* parser/parser.nit:8596 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8596);
+  }
+  /* parser/parser.nit:8598 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8598);
+  }
+  /* parser/parser.nit:8599 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8608 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8609 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8609);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction198___action[] = "parser::ReduceAction198::(parser::ReduceAction::action)";
+void parser___ReduceAction198___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8614;
+  fra.me.meth = LOCATE_parser___ReduceAction198___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8616 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8617 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8618 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8619 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8620 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8621 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8622 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8623 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8625 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8625);
+  }
+  /* parser/parser.nit:8627 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8627);
+  }
+  /* parser/parser.nit:8629 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8629);
+  }
+  /* parser/parser.nit:8631 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8631);
+  }
+  /* parser/parser.nit:8633 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8633);
+  }
+  /* parser/parser.nit:8634 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8643 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8644 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8644);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction199___action[] = "parser::ReduceAction199::(parser::ReduceAction::action)";
+void parser___ReduceAction199___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8649;
+  fra.me.meth = LOCATE_parser___ReduceAction199___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8651 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8652 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8653 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8654 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8655 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8656 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8657 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8658 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8659 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8661 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8661);
+  }
+  /* parser/parser.nit:8663 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8663);
+  }
+  /* parser/parser.nit:8665 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8665);
+  }
+  /* parser/parser.nit:8667 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8667);
+  }
+  /* parser/parser.nit:8669 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8669);
+  }
+  /* parser/parser.nit:8671 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8671);
+  }
+  /* parser/parser.nit:8672 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8681 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8682 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8682);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction200___action[] = "parser::ReduceAction200::(parser::ReduceAction::action)";
+void parser___ReduceAction200___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8687;
+  fra.me.meth = LOCATE_parser___ReduceAction200___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8689 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8690 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8691 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8692 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8693 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8694 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8695 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8696 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8697 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8699 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8699);
+  }
+  /* parser/parser.nit:8701 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8701);
+  }
+  /* parser/parser.nit:8703 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8703);
+  }
+  /* parser/parser.nit:8705 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8705);
+  }
+  /* parser/parser.nit:8707 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8707);
+  }
+  /* parser/parser.nit:8709 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8709);
+  }
+  /* parser/parser.nit:8710 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8719 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8720 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8720);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction201___action[] = "parser::ReduceAction201::(parser::ReduceAction::action)";
+void parser___ReduceAction201___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8725;
+  fra.me.meth = LOCATE_parser___ReduceAction201___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8727 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8728 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8729 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8730 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8731 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8732 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8733 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8734 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8735 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8736 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8738 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
+  }
+  /* parser/parser.nit:8740 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8740);
+  }
+  /* parser/parser.nit:8742 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8742);
+  }
+  /* parser/parser.nit:8744 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8744);
+  }
+  /* parser/parser.nit:8746 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8746);
+  }
+  /* parser/parser.nit:8748 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8748);
+  }
+  /* parser/parser.nit:8750 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8750);
+  }
+  /* parser/parser.nit:8751 */
+  fra.me.REG[3] = NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8760 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8761 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8761);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction202___action[] = "parser::ReduceAction202::(parser::ReduceAction::action)";
+void parser___ReduceAction202___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8766;
+  fra.me.meth = LOCATE_parser___ReduceAction202___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8768 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8769 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8770 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8771 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8772 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8773 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8775 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8775);
+  }
+  /* parser/parser.nit:8777 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8777);
+  }
+  /* parser/parser.nit:8779 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8779);
+  }
+  /* parser/parser.nit:8781 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8781);
+  }
+  /* parser/parser.nit:8783 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8783);
+  }
+  /* parser/parser.nit:8784 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8792 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8793 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8793);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction203___action[] = "parser::ReduceAction203::(parser::ReduceAction::action)";
+void parser___ReduceAction203___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8798;
+  fra.me.meth = LOCATE_parser___ReduceAction203___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8800 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8801 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8802 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8803 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8804 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8805 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8806 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8808 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8808);
+  }
+  /* parser/parser.nit:8810 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8810);
+  }
+  /* parser/parser.nit:8812 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8812);
+  }
+  /* parser/parser.nit:8814 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8814);
+  }
+  /* parser/parser.nit:8816 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8816);
+  }
+  /* parser/parser.nit:8818 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8818);
+  }
+  /* parser/parser.nit:8819 */
+  fra.me.REG[3] = NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:8827 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8828 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8828);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction204___action[] = "parser::ReduceAction204::(parser::ReduceAction::action)";
+void parser___ReduceAction204___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8833;
+  fra.me.meth = LOCATE_parser___ReduceAction204___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8835 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8836 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8837 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8838 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8839 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8840 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8841 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8843 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8843);
+  }
+  /* parser/parser.nit:8845 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8845);
+  }
+  /* parser/parser.nit:8847 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8847);
+  }
+  /* parser/parser.nit:8849 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8849);
+  }
+  /* parser/parser.nit:8850 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8861 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8862 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8862);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction205___action[] = "parser::ReduceAction205::(parser::ReduceAction::action)";
+void parser___ReduceAction205___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8867;
+  fra.me.meth = LOCATE_parser___ReduceAction205___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8869 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8870 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8871 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8872 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8873 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8874 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8875 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8876 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8878 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8878);
+  }
+  /* parser/parser.nit:8880 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8880);
+  }
+  /* parser/parser.nit:8882 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8882);
+  }
+  /* parser/parser.nit:8884 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8884);
+  }
+  /* parser/parser.nit:8886 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8886);
+  }
+  /* parser/parser.nit:8887 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8898 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8899 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8899);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction206___action[] = "parser::ReduceAction206::(parser::ReduceAction::action)";
+void parser___ReduceAction206___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8904;
+  fra.me.meth = LOCATE_parser___ReduceAction206___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8906 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8907 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8908 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8909 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8910 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8911 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8912 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8913 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8915 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8915);
+  }
+  /* parser/parser.nit:8917 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8917);
+  }
+  /* parser/parser.nit:8919 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8919);
+  }
+  /* parser/parser.nit:8921 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8921);
+  }
+  /* parser/parser.nit:8923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8923);
+  }
+  /* parser/parser.nit:8924 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8935 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8936 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8936);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction207___action[] = "parser::ReduceAction207::(parser::ReduceAction::action)";
+void parser___ReduceAction207___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8941;
+  fra.me.meth = LOCATE_parser___ReduceAction207___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8943 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8944 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8945 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8946 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8947 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8948 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8949 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8950 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8951 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8953 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8953);
+  }
+  /* parser/parser.nit:8955 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8955);
+  }
+  /* parser/parser.nit:8957 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8957);
+  }
+  /* parser/parser.nit:8959 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8959);
+  }
+  /* parser/parser.nit:8961 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8961);
+  }
+  /* parser/parser.nit:8963 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8963);
+  }
+  /* parser/parser.nit:8964 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:8975 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:8976 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8976);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction208___action[] = "parser::ReduceAction208::(parser::ReduceAction::action)";
+void parser___ReduceAction208___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 8981;
+  fra.me.meth = LOCATE_parser___ReduceAction208___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:8983 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:8984 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8985 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8986 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8987 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8988 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8989 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8990 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:8992 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8992);
+  }
+  /* parser/parser.nit:8994 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8994);
+  }
+  /* parser/parser.nit:8996 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8996);
+  }
+  /* parser/parser.nit:8998 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8998);
+  }
+  /* parser/parser.nit:9000 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9000);
+  }
+  /* parser/parser.nit:9001 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9012 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9013 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9013);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction209___action[] = "parser::ReduceAction209::(parser::ReduceAction::action)";
+void parser___ReduceAction209___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9018;
+  fra.me.meth = LOCATE_parser___ReduceAction209___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9020 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9021 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9022 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9023 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9024 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9025 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9026 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9027 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9028 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9030 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9030);
+  }
+  /* parser/parser.nit:9032 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9032);
+  }
+  /* parser/parser.nit:9034 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9034);
+  }
+  /* parser/parser.nit:9036 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9036);
+  }
+  /* parser/parser.nit:9038 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9038);
+  }
+  /* parser/parser.nit:9040 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9040);
+  }
+  /* parser/parser.nit:9041 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9052 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9053 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9053);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction210___action[] = "parser::ReduceAction210::(parser::ReduceAction::action)";
+void parser___ReduceAction210___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9058;
+  fra.me.meth = LOCATE_parser___ReduceAction210___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9060 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9061 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9062 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9063 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9064 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9065 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9066 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9067 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9068 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9070 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9070);
+  }
+  /* parser/parser.nit:9072 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9072);
+  }
+  /* parser/parser.nit:9074 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9074);
+  }
+  /* parser/parser.nit:9076 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9076);
+  }
+  /* parser/parser.nit:9078 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9078);
+  }
+  /* parser/parser.nit:9080 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9080);
+  }
+  /* parser/parser.nit:9081 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9092 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9093 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9093);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction211___action[] = "parser::ReduceAction211::(parser::ReduceAction::action)";
+void parser___ReduceAction211___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9098;
+  fra.me.meth = LOCATE_parser___ReduceAction211___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9100 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9101 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9102 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9103 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9104 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9105 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9106 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9107 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9108 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9109 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9111 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9111);
+  }
+  /* parser/parser.nit:9113 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9113);
+  }
+  /* parser/parser.nit:9115 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9115);
+  }
+  /* parser/parser.nit:9117 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9117);
+  }
+  /* parser/parser.nit:9119 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9119);
+  }
+  /* parser/parser.nit:9121 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9121);
+  }
+  /* parser/parser.nit:9123 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9123);
+  }
+  /* parser/parser.nit:9124 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:9135 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9136 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9136);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction212___action[] = "parser::ReduceAction212::(parser::ReduceAction::action)";
+void parser___ReduceAction212___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9141;
+  fra.me.meth = LOCATE_parser___ReduceAction212___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9143 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9144 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9145 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9146 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9147 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9148 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9149 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9150 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9152 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9152);
+  }
+  /* parser/parser.nit:9154 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9154);
+  }
+  /* parser/parser.nit:9156 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9156);
+  }
+  /* parser/parser.nit:9158 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9158);
+  }
+  /* parser/parser.nit:9160 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9160);
+  }
+  /* parser/parser.nit:9161 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9172 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9173 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9173);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction213___action[] = "parser::ReduceAction213::(parser::ReduceAction::action)";
+void parser___ReduceAction213___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9178;
+  fra.me.meth = LOCATE_parser___ReduceAction213___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9180 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9181 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9182 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9183 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9184 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9185 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9186 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9187 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9188 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9190 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9190);
+  }
+  /* parser/parser.nit:9192 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9192);
+  }
+  /* parser/parser.nit:9194 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9194);
+  }
+  /* parser/parser.nit:9196 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9196);
+  }
+  /* parser/parser.nit:9198 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9198);
+  }
+  /* parser/parser.nit:9200 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9200);
+  }
+  /* parser/parser.nit:9201 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9212 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9213 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9213);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction214___action[] = "parser::ReduceAction214::(parser::ReduceAction::action)";
+void parser___ReduceAction214___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9218;
+  fra.me.meth = LOCATE_parser___ReduceAction214___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9220 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9221 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9222 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9223 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9224 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9225 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9226 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9227 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9228 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9230 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9230);
+  }
+  /* parser/parser.nit:9232 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9232);
+  }
+  /* parser/parser.nit:9234 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9234);
+  }
+  /* parser/parser.nit:9236 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9236);
+  }
+  /* parser/parser.nit:9238 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9238);
+  }
+  /* parser/parser.nit:9240 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9240);
+  }
+  /* parser/parser.nit:9241 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9252 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9253 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9253);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction215___action[] = "parser::ReduceAction215::(parser::ReduceAction::action)";
+void parser___ReduceAction215___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9258;
+  fra.me.meth = LOCATE_parser___ReduceAction215___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9260 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9261 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9262 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9263 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9264 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9265 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9266 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9267 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9268 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9269 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9271 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9271);
+  }
+  /* parser/parser.nit:9273 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9273);
+  }
+  /* parser/parser.nit:9275 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9275);
+  }
+  /* parser/parser.nit:9277 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9277);
+  }
+  /* parser/parser.nit:9279 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9279);
+  }
+  /* parser/parser.nit:9281 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9281);
+  }
+  /* parser/parser.nit:9283 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9283);
+  }
+  /* parser/parser.nit:9284 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9295 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9296 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9296);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction216___action[] = "parser::ReduceAction216::(parser::ReduceAction::action)";
+void parser___ReduceAction216___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9301;
+  fra.me.meth = LOCATE_parser___ReduceAction216___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9303 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9304 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9305 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9306 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9307 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9308 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9309 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9310 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9311 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9313 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9313);
+  }
+  /* parser/parser.nit:9315 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9315);
+  }
+  /* parser/parser.nit:9317 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9317);
+  }
+  /* parser/parser.nit:9319 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9319);
+  }
+  /* parser/parser.nit:9321 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9321);
+  }
+  /* parser/parser.nit:9323 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9323);
+  }
+  /* parser/parser.nit:9324 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9335 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9336 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9336);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction217___action[] = "parser::ReduceAction217::(parser::ReduceAction::action)";
+void parser___ReduceAction217___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9341;
+  fra.me.meth = LOCATE_parser___ReduceAction217___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9343 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9344 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9345 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9346 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9347 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9348 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9349 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9350 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9351 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9352 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9354 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9354);
+  }
+  /* parser/parser.nit:9356 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9356);
+  }
+  /* parser/parser.nit:9358 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9358);
+  }
+  /* parser/parser.nit:9360 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9360);
+  }
+  /* parser/parser.nit:9362 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9362);
+  }
+  /* parser/parser.nit:9364 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9364);
+  }
+  /* parser/parser.nit:9366 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9366);
+  }
+  /* parser/parser.nit:9367 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9378 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9379 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9379);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction218___action[] = "parser::ReduceAction218::(parser::ReduceAction::action)";
+void parser___ReduceAction218___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9384;
+  fra.me.meth = LOCATE_parser___ReduceAction218___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9388 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9389 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9390 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9391 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9392 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9393 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9394 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9395 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9397 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9397);
+  }
+  /* parser/parser.nit:9399 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9399);
+  }
+  /* parser/parser.nit:9401 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9401);
+  }
+  /* parser/parser.nit:9403 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9403);
+  }
+  /* parser/parser.nit:9405 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9405);
+  }
+  /* parser/parser.nit:9407 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9407);
+  }
+  /* parser/parser.nit:9409 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9409);
+  }
+  /* parser/parser.nit:9410 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9421 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9422 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9422);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction219___action[] = "parser::ReduceAction219::(parser::ReduceAction::action)";
+void parser___ReduceAction219___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9427;
+  fra.me.meth = LOCATE_parser___ReduceAction219___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9429 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9430 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9432 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9433 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9434 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9435 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9436 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9437 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9438 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9439 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9441 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9441);
+  }
+  /* parser/parser.nit:9443 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9443);
+  }
+  /* parser/parser.nit:9445 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9445);
+  }
+  /* parser/parser.nit:9447 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9447);
+  }
+  /* parser/parser.nit:9449 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9449);
+  }
+  /* parser/parser.nit:9451 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9451);
+  }
+  /* parser/parser.nit:9453 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9453);
+  }
+  /* parser/parser.nit:9455 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9455);
+  }
+  /* parser/parser.nit:9456 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:9467 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9468 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9468);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction220___action[] = "parser::ReduceAction220::(parser::ReduceAction::action)";
+void parser___ReduceAction220___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9473;
+  fra.me.meth = LOCATE_parser___ReduceAction220___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9475 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9476 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9477 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9478 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9479 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9480 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9481 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9482 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9484 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9484);
+  }
+  /* parser/parser.nit:9486 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9486);
+  }
+  /* parser/parser.nit:9488 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9488);
+  }
+  /* parser/parser.nit:9490 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9490);
+  }
+  /* parser/parser.nit:9492 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9492);
+  }
+  /* parser/parser.nit:9493 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9504 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9505 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9505);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction221___action[] = "parser::ReduceAction221::(parser::ReduceAction::action)";
+void parser___ReduceAction221___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9510;
+  fra.me.meth = LOCATE_parser___ReduceAction221___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9512 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9513 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9514 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9515 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9516 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9517 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9518 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9519 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9520 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9522 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9522);
+  }
+  /* parser/parser.nit:9524 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9524);
+  }
+  /* parser/parser.nit:9526 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9526);
+  }
+  /* parser/parser.nit:9528 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9528);
+  }
+  /* parser/parser.nit:9530 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9530);
+  }
+  /* parser/parser.nit:9532 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9532);
+  }
+  /* parser/parser.nit:9533 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9544 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction222___action[] = "parser::ReduceAction222::(parser::ReduceAction::action)";
+void parser___ReduceAction222___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9550;
+  fra.me.meth = LOCATE_parser___ReduceAction222___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9556 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9557 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9558 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9559 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9560 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9562 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9562);
+  }
+  /* parser/parser.nit:9564 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9564);
+  }
+  /* parser/parser.nit:9566 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9566);
+  }
+  /* parser/parser.nit:9568 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9568);
+  }
+  /* parser/parser.nit:9570 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9570);
+  }
+  /* parser/parser.nit:9572 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9572);
+  }
+  /* parser/parser.nit:9573 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9584 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9585 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9585);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction223___action[] = "parser::ReduceAction223::(parser::ReduceAction::action)";
+void parser___ReduceAction223___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9590;
+  fra.me.meth = LOCATE_parser___ReduceAction223___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9592 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9593 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9594 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9595 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9596 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9597 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9598 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9599 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9600 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9601 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9603 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9603);
+  }
+  /* parser/parser.nit:9605 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9605);
+  }
+  /* parser/parser.nit:9607 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9607);
+  }
+  /* parser/parser.nit:9609 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9609);
+  }
+  /* parser/parser.nit:9611 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9611);
+  }
+  /* parser/parser.nit:9613 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9613);
+  }
+  /* parser/parser.nit:9615 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9615);
+  }
+  /* parser/parser.nit:9616 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9627 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9628 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9628);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction224___action[] = "parser::ReduceAction224::(parser::ReduceAction::action)";
+void parser___ReduceAction224___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9633;
+  fra.me.meth = LOCATE_parser___ReduceAction224___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9635 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9636 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9637 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9638 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9639 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9640 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9641 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9642 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9643 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9645 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9645);
+  }
+  /* parser/parser.nit:9647 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9647);
+  }
+  /* parser/parser.nit:9649 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9649);
+  }
+  /* parser/parser.nit:9651 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9651);
+  }
+  /* parser/parser.nit:9653 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9653);
+  }
+  /* parser/parser.nit:9655 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9655);
+  }
+  /* parser/parser.nit:9656 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9667 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9668 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9668);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction225___action[] = "parser::ReduceAction225::(parser::ReduceAction::action)";
+void parser___ReduceAction225___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9673;
+  fra.me.meth = LOCATE_parser___ReduceAction225___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9675 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9676 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9677 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9678 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9679 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9680 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9681 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9682 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9683 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9684 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9686 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9686);
+  }
+  /* parser/parser.nit:9688 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9688);
+  }
+  /* parser/parser.nit:9690 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9690);
+  }
+  /* parser/parser.nit:9692 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9692);
+  }
+  /* parser/parser.nit:9694 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9694);
+  }
+  /* parser/parser.nit:9696 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9696);
+  }
+  /* parser/parser.nit:9698 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9698);
+  }
+  /* parser/parser.nit:9699 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9710 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9711 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9711);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction226___action[] = "parser::ReduceAction226::(parser::ReduceAction::action)";
+void parser___ReduceAction226___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9716;
+  fra.me.meth = LOCATE_parser___ReduceAction226___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9718 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9719 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9720 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9721 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9722 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9723 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9724 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9725 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9726 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9727 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9729 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9729);
+  }
+  /* parser/parser.nit:9731 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9731);
+  }
+  /* parser/parser.nit:9733 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9733);
+  }
+  /* parser/parser.nit:9735 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9735);
+  }
+  /* parser/parser.nit:9737 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9737);
+  }
+  /* parser/parser.nit:9739 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9739);
+  }
+  /* parser/parser.nit:9741 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9741);
+  }
+  /* parser/parser.nit:9742 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9753 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9754 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9754);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction227___action[] = "parser::ReduceAction227::(parser::ReduceAction::action)";
+void parser___ReduceAction227___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9759;
+  fra.me.meth = LOCATE_parser___ReduceAction227___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9761 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9762 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9763 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9764 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9765 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9766 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9767 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9768 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9769 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9770 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9771 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9773 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9773);
+  }
+  /* parser/parser.nit:9775 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9775);
+  }
+  /* parser/parser.nit:9777 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9777);
+  }
+  /* parser/parser.nit:9779 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9779);
+  }
+  /* parser/parser.nit:9781 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9781);
+  }
+  /* parser/parser.nit:9783 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9783);
+  }
+  /* parser/parser.nit:9785 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9785);
+  }
+  /* parser/parser.nit:9787 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9787);
+  }
+  /* parser/parser.nit:9788 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:9799 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9800 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9800);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction228___action[] = "parser::ReduceAction228::(parser::ReduceAction::action)";
+void parser___ReduceAction228___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9805;
+  fra.me.meth = LOCATE_parser___ReduceAction228___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9807 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9808 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9809 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9810 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9811 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9812 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9813 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9814 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9815 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9817 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9817);
+  }
+  /* parser/parser.nit:9819 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9819);
+  }
+  /* parser/parser.nit:9821 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9821);
+  }
+  /* parser/parser.nit:9823 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9823);
+  }
+  /* parser/parser.nit:9825 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9825);
+  }
+  /* parser/parser.nit:9827 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9827);
+  }
+  /* parser/parser.nit:9828 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9839 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9840 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9840);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction229___action[] = "parser::ReduceAction229::(parser::ReduceAction::action)";
+void parser___ReduceAction229___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9845;
+  fra.me.meth = LOCATE_parser___ReduceAction229___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9847 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9848 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9849 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9850 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9851 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9852 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9853 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9854 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9855 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9856 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9858 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9858);
+  }
+  /* parser/parser.nit:9860 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9860);
+  }
+  /* parser/parser.nit:9862 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9862);
+  }
+  /* parser/parser.nit:9864 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9864);
+  }
+  /* parser/parser.nit:9866 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9866);
+  }
+  /* parser/parser.nit:9868 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9868);
+  }
+  /* parser/parser.nit:9870 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9870);
+  }
+  /* parser/parser.nit:9871 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9882 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9883 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9883);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction230___action[] = "parser::ReduceAction230::(parser::ReduceAction::action)";
+void parser___ReduceAction230___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9888;
+  fra.me.meth = LOCATE_parser___ReduceAction230___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9890 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9891 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9892 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9893 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9894 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9895 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9896 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9897 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9898 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9899 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9901 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9901);
+  }
+  /* parser/parser.nit:9903 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9903);
+  }
+  /* parser/parser.nit:9905 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9905);
+  }
+  /* parser/parser.nit:9907 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9907);
+  }
+  /* parser/parser.nit:9909 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9909);
+  }
+  /* parser/parser.nit:9911 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9911);
+  }
+  /* parser/parser.nit:9913 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9913);
+  }
+  /* parser/parser.nit:9914 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9925 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9926 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9926);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction231___action[] = "parser::ReduceAction231::(parser::ReduceAction::action)";
+void parser___ReduceAction231___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9931;
+  fra.me.meth = LOCATE_parser___ReduceAction231___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9933 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9934 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9935 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9936 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9937 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9938 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9939 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9940 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9941 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9942 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9943 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9945 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9945);
+  }
+  /* parser/parser.nit:9947 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9947);
+  }
+  /* parser/parser.nit:9949 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9949);
+  }
+  /* parser/parser.nit:9951 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9951);
+  }
+  /* parser/parser.nit:9953 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9953);
+  }
+  /* parser/parser.nit:9955 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9955);
+  }
+  /* parser/parser.nit:9957 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9957);
+  }
+  /* parser/parser.nit:9959 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9959);
+  }
+  /* parser/parser.nit:9960 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:9971 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:9972 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9972);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction232___action[] = "parser::ReduceAction232::(parser::ReduceAction::action)";
+void parser___ReduceAction232___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 9977;
+  fra.me.meth = LOCATE_parser___ReduceAction232___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:9979 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:9980 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9981 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9982 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9983 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9984 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9985 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9986 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9987 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9988 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:9990 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9990);
+  }
+  /* parser/parser.nit:9992 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9992);
+  }
+  /* parser/parser.nit:9994 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9994);
+  }
+  /* parser/parser.nit:9996 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9996);
+  }
+  /* parser/parser.nit:9998 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9998);
+  }
+  /* parser/parser.nit:10000 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10000);
+  }
+  /* parser/parser.nit:10002 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10002);
+  }
+  /* parser/parser.nit:10003 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10014 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10015 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10015);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction233___action[] = "parser::ReduceAction233::(parser::ReduceAction::action)";
+void parser___ReduceAction233___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10020;
+  fra.me.meth = LOCATE_parser___ReduceAction233___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10022 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10023 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10024 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10025 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10026 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10027 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10028 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10029 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10030 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10031 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10032 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10034 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10034);
+  }
+  /* parser/parser.nit:10036 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10036);
+  }
+  /* parser/parser.nit:10038 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10038);
+  }
+  /* parser/parser.nit:10040 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10040);
+  }
+  /* parser/parser.nit:10042 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10042);
+  }
+  /* parser/parser.nit:10044 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10044);
+  }
+  /* parser/parser.nit:10046 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10046);
+  }
+  /* parser/parser.nit:10048 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10048);
+  }
+  /* parser/parser.nit:10049 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10060 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10061 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10061);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction234___action[] = "parser::ReduceAction234::(parser::ReduceAction::action)";
+void parser___ReduceAction234___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10066;
+  fra.me.meth = LOCATE_parser___ReduceAction234___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10068 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10069 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10070 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10071 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10072 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10073 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10074 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10075 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10076 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10077 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10078 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10080 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10080);
+  }
+  /* parser/parser.nit:10082 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10082);
+  }
+  /* parser/parser.nit:10084 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10084);
+  }
+  /* parser/parser.nit:10086 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10086);
+  }
+  /* parser/parser.nit:10088 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10088);
+  }
+  /* parser/parser.nit:10090 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10090);
+  }
+  /* parser/parser.nit:10092 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10092);
+  }
+  /* parser/parser.nit:10094 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10094);
+  }
+  /* parser/parser.nit:10095 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10106 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10107 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10107);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction235___action[] = "parser::ReduceAction235::(parser::ReduceAction::action)";
+void parser___ReduceAction235___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10112;
+  fra.me.meth = LOCATE_parser___ReduceAction235___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10114 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10115 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10116 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10117 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10118 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10119 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10120 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10121 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10122 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10123 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10124 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10125 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10127 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10127);
+  }
+  /* parser/parser.nit:10129 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10129);
+  }
+  /* parser/parser.nit:10131 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10131);
+  }
+  /* parser/parser.nit:10133 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10133);
+  }
+  /* parser/parser.nit:10135 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10135);
+  }
+  /* parser/parser.nit:10137 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10137);
+  }
+  /* parser/parser.nit:10139 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10139);
+  }
+  /* parser/parser.nit:10141 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10141);
+  }
+  /* parser/parser.nit:10143 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10143);
+  }
+  /* parser/parser.nit:10144 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10155 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10156 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10156);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction236___action[] = "parser::ReduceAction236::(parser::ReduceAction::action)";
+void parser___ReduceAction236___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10161;
+  fra.me.meth = LOCATE_parser___ReduceAction236___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10163 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10164 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10165 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10166 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10167 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10168 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10170 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10170);
+  }
+  /* parser/parser.nit:10172 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10172);
+  }
+  /* parser/parser.nit:10174 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10174);
+  }
+  /* parser/parser.nit:10176 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10176);
+  }
+  /* parser/parser.nit:10178 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10178);
+  }
+  /* parser/parser.nit:10179 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10190 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10191 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10191);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction237___action[] = "parser::ReduceAction237::(parser::ReduceAction::action)";
+void parser___ReduceAction237___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10196;
+  fra.me.meth = LOCATE_parser___ReduceAction237___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10198 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10199 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10200 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10201 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10202 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10203 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10204 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10206 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10206);
+  }
+  /* parser/parser.nit:10208 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10208);
+  }
+  /* parser/parser.nit:10210 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10210);
+  }
+  /* parser/parser.nit:10212 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10212);
+  }
+  /* parser/parser.nit:10214 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10214);
+  }
+  /* parser/parser.nit:10216 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10216);
+  }
+  /* parser/parser.nit:10217 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10228 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10229 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10229);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction238___action[] = "parser::ReduceAction238::(parser::ReduceAction::action)";
+void parser___ReduceAction238___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10234;
+  fra.me.meth = LOCATE_parser___ReduceAction238___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10236 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10237 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10238 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10239 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10240 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10241 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10242 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10244 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10244);
+  }
+  /* parser/parser.nit:10246 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10246);
+  }
+  /* parser/parser.nit:10248 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10248);
+  }
+  /* parser/parser.nit:10250 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10250);
+  }
+  /* parser/parser.nit:10252 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10252);
+  }
+  /* parser/parser.nit:10254 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10254);
+  }
+  /* parser/parser.nit:10255 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10266 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10267 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10267);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction239___action[] = "parser::ReduceAction239::(parser::ReduceAction::action)";
+void parser___ReduceAction239___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10272;
+  fra.me.meth = LOCATE_parser___ReduceAction239___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10274 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10275 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10276 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10277 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10278 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10279 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10280 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10281 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10283 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10283);
+  }
+  /* parser/parser.nit:10285 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10285);
+  }
+  /* parser/parser.nit:10287 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10287);
+  }
+  /* parser/parser.nit:10289 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10289);
+  }
+  /* parser/parser.nit:10291 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10291);
+  }
+  /* parser/parser.nit:10293 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10293);
+  }
+  /* parser/parser.nit:10295 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10295);
+  }
+  /* parser/parser.nit:10296 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10307 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10308 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10308);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction240___action[] = "parser::ReduceAction240::(parser::ReduceAction::action)";
+void parser___ReduceAction240___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10313;
+  fra.me.meth = LOCATE_parser___ReduceAction240___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10315 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10316 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10317 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10318 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10319 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10320 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10321 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10323 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10323);
+  }
+  /* parser/parser.nit:10325 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10325);
+  }
+  /* parser/parser.nit:10327 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10327);
+  }
+  /* parser/parser.nit:10329 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10329);
+  }
+  /* parser/parser.nit:10331 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10331);
+  }
+  /* parser/parser.nit:10333 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10333);
+  }
+  /* parser/parser.nit:10334 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10345 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10346 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10346);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction241___action[] = "parser::ReduceAction241::(parser::ReduceAction::action)";
+void parser___ReduceAction241___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10351;
+  fra.me.meth = LOCATE_parser___ReduceAction241___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10353 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10354 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10355 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10356 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10357 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10358 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10359 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10360 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10362 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10362);
+  }
+  /* parser/parser.nit:10364 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10364);
+  }
+  /* parser/parser.nit:10366 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10366);
+  }
+  /* parser/parser.nit:10368 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10368);
+  }
+  /* parser/parser.nit:10370 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10370);
+  }
+  /* parser/parser.nit:10372 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10372);
+  }
+  /* parser/parser.nit:10374 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10374);
+  }
+  /* parser/parser.nit:10375 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10386 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10387 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10387);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction242___action[] = "parser::ReduceAction242::(parser::ReduceAction::action)";
+void parser___ReduceAction242___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10392;
+  fra.me.meth = LOCATE_parser___ReduceAction242___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10394 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10395 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10396 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10397 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10398 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10399 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10400 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10401 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10403 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10403);
+  }
+  /* parser/parser.nit:10405 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10405);
+  }
+  /* parser/parser.nit:10407 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10407);
+  }
+  /* parser/parser.nit:10409 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10409);
+  }
+  /* parser/parser.nit:10411 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10411);
+  }
+  /* parser/parser.nit:10413 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10413);
+  }
+  /* parser/parser.nit:10415 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10415);
+  }
+  /* parser/parser.nit:10416 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10427 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10428 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10428);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction243___action[] = "parser::ReduceAction243::(parser::ReduceAction::action)";
+void parser___ReduceAction243___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10433;
+  fra.me.meth = LOCATE_parser___ReduceAction243___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10435 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10436 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10437 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10438 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10439 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10440 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10441 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10442 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10443 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10445 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10445);
+  }
+  /* parser/parser.nit:10447 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10447);
+  }
+  /* parser/parser.nit:10449 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10449);
+  }
+  /* parser/parser.nit:10451 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10451);
+  }
+  /* parser/parser.nit:10453 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10453);
+  }
+  /* parser/parser.nit:10455 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10455);
+  }
+  /* parser/parser.nit:10457 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10457);
+  }
+  /* parser/parser.nit:10459 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10459);
+  }
+  /* parser/parser.nit:10460 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10471 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10472 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10472);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction244___action[] = "parser::ReduceAction244::(parser::ReduceAction::action)";
+void parser___ReduceAction244___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10477;
+  fra.me.meth = LOCATE_parser___ReduceAction244___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10479 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10480 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10481 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10482 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10483 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10484 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10485 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10487 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10487);
+  }
+  /* parser/parser.nit:10489 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10489);
+  }
+  /* parser/parser.nit:10491 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10491);
+  }
+  /* parser/parser.nit:10493 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10493);
+  }
+  /* parser/parser.nit:10495 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10495);
+  }
+  /* parser/parser.nit:10497 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10497);
+  }
+  /* parser/parser.nit:10498 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10509 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10510 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10510);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction245___action[] = "parser::ReduceAction245::(parser::ReduceAction::action)";
+void parser___ReduceAction245___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10515;
+  fra.me.meth = LOCATE_parser___ReduceAction245___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10517 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10518 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10519 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10520 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10521 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10522 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10523 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10524 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10526 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10526);
+  }
+  /* parser/parser.nit:10528 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10528);
+  }
+  /* parser/parser.nit:10530 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10530);
+  }
+  /* parser/parser.nit:10532 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10532);
+  }
+  /* parser/parser.nit:10534 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10534);
+  }
+  /* parser/parser.nit:10536 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10536);
+  }
+  /* parser/parser.nit:10538 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10538);
+  }
+  /* parser/parser.nit:10539 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10550 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10551 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10551);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction246___action[] = "parser::ReduceAction246::(parser::ReduceAction::action)";
+void parser___ReduceAction246___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10556;
+  fra.me.meth = LOCATE_parser___ReduceAction246___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10558 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10559 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10560 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10561 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10562 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10563 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10564 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10565 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10567 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10567);
+  }
+  /* parser/parser.nit:10569 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10569);
+  }
+  /* parser/parser.nit:10571 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10571);
+  }
+  /* parser/parser.nit:10573 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10573);
+  }
+  /* parser/parser.nit:10575 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10575);
+  }
+  /* parser/parser.nit:10577 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10577);
+  }
+  /* parser/parser.nit:10579 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10579);
+  }
+  /* parser/parser.nit:10580 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10591 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10592 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10592);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction247___action[] = "parser::ReduceAction247::(parser::ReduceAction::action)";
+void parser___ReduceAction247___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10597;
+  fra.me.meth = LOCATE_parser___ReduceAction247___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10599 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10600 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10601 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10602 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10603 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10604 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10605 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10606 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10607 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10609 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10609);
+  }
+  /* parser/parser.nit:10611 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10611);
+  }
+  /* parser/parser.nit:10613 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10613);
+  }
+  /* parser/parser.nit:10615 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10615);
+  }
+  /* parser/parser.nit:10617 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10617);
+  }
+  /* parser/parser.nit:10619 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10619);
+  }
+  /* parser/parser.nit:10621 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10621);
+  }
+  /* parser/parser.nit:10623 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10623);
+  }
+  /* parser/parser.nit:10624 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10635 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10636 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10636);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction248___action[] = "parser::ReduceAction248::(parser::ReduceAction::action)";
+void parser___ReduceAction248___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10641;
+  fra.me.meth = LOCATE_parser___ReduceAction248___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10643 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10644 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10645 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10646 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10647 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10648 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10649 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10650 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10652 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10652);
+  }
+  /* parser/parser.nit:10654 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10654);
+  }
+  /* parser/parser.nit:10656 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10656);
+  }
+  /* parser/parser.nit:10658 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10658);
+  }
+  /* parser/parser.nit:10660 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10660);
+  }
+  /* parser/parser.nit:10662 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10662);
+  }
+  /* parser/parser.nit:10664 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10664);
+  }
+  /* parser/parser.nit:10665 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10676 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10677 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10677);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction249___action[] = "parser::ReduceAction249::(parser::ReduceAction::action)";
+void parser___ReduceAction249___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10682;
+  fra.me.meth = LOCATE_parser___ReduceAction249___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10684 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10685 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10686 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10687 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10688 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10689 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10690 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10691 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10692 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10694 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10694);
+  }
+  /* parser/parser.nit:10696 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10696);
+  }
+  /* parser/parser.nit:10698 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10698);
+  }
+  /* parser/parser.nit:10700 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10700);
+  }
+  /* parser/parser.nit:10702 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10702);
+  }
+  /* parser/parser.nit:10704 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10704);
+  }
+  /* parser/parser.nit:10706 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10706);
+  }
+  /* parser/parser.nit:10708 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10708);
+  }
+  /* parser/parser.nit:10709 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10720 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10721 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10721);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction250___action[] = "parser::ReduceAction250::(parser::ReduceAction::action)";
+void parser___ReduceAction250___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10726;
+  fra.me.meth = LOCATE_parser___ReduceAction250___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10728 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10729 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10730 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10731 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10732 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10733 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10734 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10735 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10736 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10738 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10738);
+  }
+  /* parser/parser.nit:10740 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10740);
+  }
+  /* parser/parser.nit:10742 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10742);
+  }
+  /* parser/parser.nit:10744 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10744);
+  }
+  /* parser/parser.nit:10746 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10746);
+  }
+  /* parser/parser.nit:10748 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10748);
+  }
+  /* parser/parser.nit:10750 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10750);
+  }
+  /* parser/parser.nit:10752 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10752);
+  }
+  /* parser/parser.nit:10753 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10764 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10765 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10765);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction251___action[] = "parser::ReduceAction251::(parser::ReduceAction::action)";
+void parser___ReduceAction251___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10770;
+  fra.me.meth = LOCATE_parser___ReduceAction251___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10772 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10773 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10774 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10775 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10776 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10777 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10778 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10779 */
+  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10780 */
+  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10781 */
+  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10783 */
+  REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_parser___parser_nodes___ADoc, ID_parser___parser_nodes___ADoc)) /*cast nullable ADoc*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10783);
+  }
+  /* parser/parser.nit:10785 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10785);
+  }
+  /* parser/parser.nit:10787 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10787);
+  }
+  /* parser/parser.nit:10789 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10789);
+  }
+  /* parser/parser.nit:10791 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10791);
+  }
+  /* parser/parser.nit:10793 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10793);
+  }
+  /* parser/parser.nit:10795 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10795);
+  }
+  /* parser/parser.nit:10797 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast nullable AExternCalls*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10797);
+  }
+  /* parser/parser.nit:10799 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCodeBlock, ID_parser___parser_nodes___AExternCodeBlock)) /*cast nullable AExternCodeBlock*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10799);
+  }
+  /* parser/parser.nit:10800 */
+  fra.me.REG[3] = NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10811 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10812 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10812);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction252___action[] = "parser::ReduceAction252::(parser::ReduceAction::action)";
+void parser___ReduceAction252___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10817;
+  fra.me.meth = LOCATE_parser___ReduceAction252___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10819 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10820 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10822 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10822);
+  }
+  /* parser/parser.nit:10823 */
+  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10827 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10828 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10828);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction253___action[] = "parser::ReduceAction253::(parser::ReduceAction::action)";
+void parser___ReduceAction253___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10833;
+  fra.me.meth = LOCATE_parser___ReduceAction253___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10835 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10836 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10837 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10839 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10839);
+  }
+  /* parser/parser.nit:10841 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreadable, ID_parser___parser_nodes___TKwreadable)) /*cast nullable TKwreadable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10841);
+  }
+  /* parser/parser.nit:10842 */
+  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10846 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10847 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10847);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction254___action[] = "parser::ReduceAction254::(parser::ReduceAction::action)";
+void parser___ReduceAction254___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10852;
+  fra.me.meth = LOCATE_parser___ReduceAction254___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10854 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10855 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10857 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10857);
+  }
+  /* parser/parser.nit:10858 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10863 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10864 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10864);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction255___action[] = "parser::ReduceAction255::(parser::ReduceAction::action)";
+void parser___ReduceAction255___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10869;
+  fra.me.meth = LOCATE_parser___ReduceAction255___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10871 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10872 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10873 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10875 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10875);
+  }
+  /* parser/parser.nit:10877 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10877);
+  }
+  /* parser/parser.nit:10878 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:10883 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10884 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10884);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction256___action[] = "parser::ReduceAction256::(parser::ReduceAction::action)";
+void parser___ReduceAction256___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10889;
+  fra.me.meth = LOCATE_parser___ReduceAction256___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10891 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10892 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10893 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10895 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10895);
+  }
+  /* parser/parser.nit:10897 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10897);
+  }
+  /* parser/parser.nit:10898 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10903 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10904 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10904);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction257___action[] = "parser::ReduceAction257::(parser::ReduceAction::action)";
+void parser___ReduceAction257___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10909;
+  fra.me.meth = LOCATE_parser___ReduceAction257___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10911 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10912 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10913 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10914 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10916 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwredef, ID_parser___parser_nodes___TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10916);
+  }
+  /* parser/parser.nit:10918 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10918);
+  }
+  /* parser/parser.nit:10920 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwwritable, ID_parser___parser_nodes___TKwwritable)) /*cast nullable TKwwritable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10920);
+  }
+  /* parser/parser.nit:10921 */
+  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:10926 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10927 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10927);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction258___action[] = "parser::ReduceAction258::(parser::ReduceAction::action)";
+void parser___ReduceAction258___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10932;
+  fra.me.meth = LOCATE_parser___ReduceAction258___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10934 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10935 */
+  fra.me.REG[3] = NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility();
+  /* parser/parser.nit:10936 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10937 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10937);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction259___action[] = "parser::ReduceAction259::(parser::ReduceAction::action)";
+void parser___ReduceAction259___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10942;
+  fra.me.meth = LOCATE_parser___ReduceAction259___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10944 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10945 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10946 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10948 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprivate, ID_parser___parser_nodes___TKwprivate)) /*cast nullable TKwprivate*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10948);
+  }
+  /* parser/parser.nit:10949 */
+  fra.me.REG[3] = NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
+  /* parser/parser.nit:10952 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10953 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10953);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction260___action[] = "parser::ReduceAction260::(parser::ReduceAction::action)";
+void parser___ReduceAction260___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10958;
+  fra.me.meth = LOCATE_parser___ReduceAction260___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10960 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10961 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10962 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10964 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwprotected, ID_parser___parser_nodes___TKwprotected)) /*cast nullable TKwprotected*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10964);
+  }
+  /* parser/parser.nit:10965 */
+  fra.me.REG[3] = NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
+  /* parser/parser.nit:10968 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10969 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10969);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction261___action[] = "parser::ReduceAction261::(parser::ReduceAction::action)";
+void parser___ReduceAction261___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10974;
+  fra.me.meth = LOCATE_parser___ReduceAction261___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10976 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10977 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10978 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10980 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwintrude, ID_parser___parser_nodes___TKwintrude)) /*cast nullable TKwintrude*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10980);
+  }
+  /* parser/parser.nit:10981 */
+  fra.me.REG[3] = NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
+  /* parser/parser.nit:10984 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:10985 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10985);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction262___action[] = "parser::ReduceAction262::(parser::ReduceAction::action)";
+void parser___ReduceAction262___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 10990;
+  fra.me.meth = LOCATE_parser___ReduceAction262___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:10992 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:10993 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:10995 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10995);
+  }
+  /* parser/parser.nit:10996 */
+  fra.me.REG[3] = NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
+  /* parser/parser.nit:10999 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11000 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11000);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction263___action[] = "parser::ReduceAction263::(parser::ReduceAction::action)";
+void parser___ReduceAction263___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11005;
+  fra.me.meth = LOCATE_parser___ReduceAction263___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11007 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11008 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11010 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPlus, ID_parser___parser_nodes___TPlus)) /*cast nullable TPlus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11010);
+  }
+  /* parser/parser.nit:11011 */
+  fra.me.REG[3] = NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11014 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11015 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11015);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction264___action[] = "parser::ReduceAction264::(parser::ReduceAction::action)";
+void parser___ReduceAction264___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11020;
+  fra.me.meth = LOCATE_parser___ReduceAction264___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11022 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11023 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11025 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11025);
+  }
+  /* parser/parser.nit:11026 */
+  fra.me.REG[3] = NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11029 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11030 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11030);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction265___action[] = "parser::ReduceAction265::(parser::ReduceAction::action)";
+void parser___ReduceAction265___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11035;
+  fra.me.meth = LOCATE_parser___ReduceAction265___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11037 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11038 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11040 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStar, ID_parser___parser_nodes___TStar)) /*cast nullable TStar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11040);
+  }
+  /* parser/parser.nit:11041 */
+  fra.me.REG[3] = NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11044 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11045 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11045);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction266___action[] = "parser::ReduceAction266::(parser::ReduceAction::action)";
+void parser___ReduceAction266___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11050;
+  fra.me.meth = LOCATE_parser___ReduceAction266___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11052 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11053 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11055 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TSlash, ID_parser___parser_nodes___TSlash)) /*cast nullable TSlash*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11055);
+  }
+  /* parser/parser.nit:11056 */
+  fra.me.REG[3] = NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11059 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11060 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11060);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction267___action[] = "parser::ReduceAction267::(parser::ReduceAction::action)";
+void parser___ReduceAction267___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11065;
+  fra.me.meth = LOCATE_parser___ReduceAction267___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11067 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11068 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11070 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPercent, ID_parser___parser_nodes___TPercent)) /*cast nullable TPercent*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11070);
+  }
+  /* parser/parser.nit:11071 */
+  fra.me.REG[3] = NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11074 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11075 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11075);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction268___action[] = "parser::ReduceAction268::(parser::ReduceAction::action)";
+void parser___ReduceAction268___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11080;
+  fra.me.meth = LOCATE_parser___ReduceAction268___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11082 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11083 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11085 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEq, ID_parser___parser_nodes___TEq)) /*cast nullable TEq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11085);
+  }
+  /* parser/parser.nit:11086 */
+  fra.me.REG[3] = NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11089 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11090 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11090);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction269___action[] = "parser::ReduceAction269::(parser::ReduceAction::action)";
+void parser___ReduceAction269___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11095;
+  fra.me.meth = LOCATE_parser___ReduceAction269___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11097 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11098 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11100 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNe, ID_parser___parser_nodes___TNe)) /*cast nullable TNe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11100);
+  }
+  /* parser/parser.nit:11101 */
+  fra.me.REG[3] = NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
+  /* parser/parser.nit:11104 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11105 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11105);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction270___action[] = "parser::ReduceAction270::(parser::ReduceAction::action)";
+void parser___ReduceAction270___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11110;
+  fra.me.meth = LOCATE_parser___ReduceAction270___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11112 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11113 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11115 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLe, ID_parser___parser_nodes___TLe)) /*cast nullable TLe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11115);
+  }
+  /* parser/parser.nit:11116 */
+  fra.me.REG[3] = NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
+  /* parser/parser.nit:11119 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11120 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11120);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction271___action[] = "parser::ReduceAction271::(parser::ReduceAction::action)";
+void parser___ReduceAction271___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11125;
+  fra.me.meth = LOCATE_parser___ReduceAction271___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11127 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11128 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11130 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGe, ID_parser___parser_nodes___TGe)) /*cast nullable TGe*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11130);
+  }
+  /* parser/parser.nit:11131 */
+  fra.me.REG[3] = NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
+  /* parser/parser.nit:11134 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11135 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11135);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction272___action[] = "parser::ReduceAction272::(parser::ReduceAction::action)";
+void parser___ReduceAction272___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11140;
+  fra.me.meth = LOCATE_parser___ReduceAction272___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11142 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11143 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11145 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLt, ID_parser___parser_nodes___TLt)) /*cast nullable TLt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11145);
+  }
+  /* parser/parser.nit:11146 */
+  fra.me.REG[3] = NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11149 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11150 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11150);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction273___action[] = "parser::ReduceAction273::(parser::ReduceAction::action)";
+void parser___ReduceAction273___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11155;
+  fra.me.meth = LOCATE_parser___ReduceAction273___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11157 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11158 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11160 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGt, ID_parser___parser_nodes___TGt)) /*cast nullable TGt*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11160);
+  }
+  /* parser/parser.nit:11161 */
+  fra.me.REG[3] = NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11164 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11165 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11165);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction274___action[] = "parser::ReduceAction274::(parser::ReduceAction::action)";
+void parser___ReduceAction274___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11170;
+  fra.me.meth = LOCATE_parser___ReduceAction274___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11172 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11173 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11175 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TLl, ID_parser___parser_nodes___TLl)) /*cast nullable TLl*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11175);
+  }
+  /* parser/parser.nit:11176 */
+  fra.me.REG[3] = NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11179 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11180 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11180);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction275___action[] = "parser::ReduceAction275::(parser::ReduceAction::action)";
+void parser___ReduceAction275___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11185;
+  fra.me.meth = LOCATE_parser___ReduceAction275___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11187 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11188 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11190 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TGg, ID_parser___parser_nodes___TGg)) /*cast nullable TGg*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11190);
+  }
+  /* parser/parser.nit:11191 */
+  fra.me.REG[3] = NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11194 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11195 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11195);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction276___action[] = "parser::ReduceAction276::(parser::ReduceAction::action)";
+void parser___ReduceAction276___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11200;
+  fra.me.meth = LOCATE_parser___ReduceAction276___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11202 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11203 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11204 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11206 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11206);
+  }
+  /* parser/parser.nit:11208 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11208);
+  }
+  /* parser/parser.nit:11209 */
+  fra.me.REG[3] = NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:11213 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11214 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11214);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction277___action[] = "parser::ReduceAction277::(parser::ReduceAction::action)";
+void parser___ReduceAction277___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11219;
+  fra.me.meth = LOCATE_parser___ReduceAction277___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11221 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11222 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11224 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStarship, ID_parser___parser_nodes___TStarship)) /*cast nullable TStarship*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11224);
+  }
+  /* parser/parser.nit:11225 */
+  fra.me.REG[3] = NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
+  /* parser/parser.nit:11228 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11229 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11229);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction278___action[] = "parser::ReduceAction278::(parser::ReduceAction::action)";
+void parser___ReduceAction278___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11234;
+  fra.me.meth = LOCATE_parser___ReduceAction278___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11236 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11237 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11238 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11240 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11240);
+  }
+  /* parser/parser.nit:11242 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11242);
+  }
+  /* parser/parser.nit:11243 */
+  fra.me.REG[3] = NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:11247 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11248 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11248);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction279___action[] = "parser::ReduceAction279::(parser::ReduceAction::action)";
+void parser___ReduceAction279___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11253;
+  fra.me.meth = LOCATE_parser___ReduceAction279___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11255 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11256 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11257 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11258 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11260 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11260);
+  }
+  /* parser/parser.nit:11262 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11262);
+  }
+  /* parser/parser.nit:11264 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11264);
+  }
+  /* parser/parser.nit:11265 */
+  fra.me.REG[3] = NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:11270 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11271 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11271);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction280___action[] = "parser::ReduceAction280::(parser::ReduceAction::action)";
+void parser___ReduceAction280___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11276;
+  fra.me.meth = LOCATE_parser___ReduceAction280___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11278 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11279 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11280 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11281 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11282 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11283 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11284 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11285 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11287 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11287);
+  }
+  /* parser/parser.nit:11289 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11289);
+  }
+  /* parser/parser.nit:11291 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11291);
+  }
+  /* parser/parser.nit:11292 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser.nit:11299 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:11300 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11300);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction281___action[] = "parser::ReduceAction281::(parser::ReduceAction::action)";
+void parser___ReduceAction281___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11305;
+  fra.me.meth = LOCATE_parser___ReduceAction281___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11307 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11308 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11309 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11310 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11311 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11312 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11313 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11314 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11315 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11317 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11317);
+  }
+  /* parser/parser.nit:11319 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11319);
+  }
+  /* parser/parser.nit:11320 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:11322 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11322);
+  }
+  /* parser/parser.nit:11324 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11324);
+  }
+  /* parser/parser.nit:11325 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser.nit:11332 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:11333 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11333);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction282___action[] = "parser::ReduceAction282::(parser::ReduceAction::action)";
+void parser___ReduceAction282___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11338;
+  fra.me.meth = LOCATE_parser___ReduceAction282___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11340 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11341 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11342 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11343 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11344 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11345 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11346 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11347 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11348 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11350 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11350);
+  }
+  /* parser/parser.nit:11352 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11352);
+  }
+  /* parser/parser.nit:11354 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11354);
+  }
+  /* parser/parser.nit:11356 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11356);
+  }
+  /* parser/parser.nit:11357 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:11358 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8]);
+  /* parser/parser.nit:11365 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:11366 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11366);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction283___action[] = "parser::ReduceAction283::(parser::ReduceAction::action)";
+void parser___ReduceAction283___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11371;
+  fra.me.meth = LOCATE_parser___ReduceAction283___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11373 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11374 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11375 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11377 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11378 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11379 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11380 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11381 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11382 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11384 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11384);
+  }
+  /* parser/parser.nit:11386 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11386);
+  }
+  /* parser/parser.nit:11387 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:11389 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11389);
+  }
+  /* parser/parser.nit:11391 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11391);
+  }
+  /* parser/parser.nit:11393 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11393);
+  }
+  /* parser/parser.nit:11394 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
+  fra.me.REG[9] = fra.me.REG[3];
+  /* parser/parser.nit:11395 */
+  fra.me.REG[9] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9]);
+  /* parser/parser.nit:11402 */
+  fra.me.REG[2] = fra.me.REG[9];
+  /* parser/parser.nit:11403 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11403);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction284___action[] = "parser::ReduceAction284::(parser::ReduceAction::action)";
+void parser___ReduceAction284___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11408;
+  fra.me.meth = LOCATE_parser___ReduceAction284___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11410 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11411 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11412 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11413 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11414 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11415 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11416 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11418 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11418);
+  }
+  /* parser/parser.nit:11420 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11420);
+  }
+  /* parser/parser.nit:11421 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
+  /* parser/parser.nit:11428 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:11429 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11429);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction285___action[] = "parser::ReduceAction285::(parser::ReduceAction::action)";
+void parser___ReduceAction285___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11434;
+  fra.me.meth = LOCATE_parser___ReduceAction285___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11436 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11437 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11438 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11439 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11440 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11441 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11442 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11443 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11445 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11445);
+  }
+  /* parser/parser.nit:11447 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11447);
+  }
+  /* parser/parser.nit:11448 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:11450 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11450);
+  }
+  /* parser/parser.nit:11451 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:11458 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:11459 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11459);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction286___action[] = "parser::ReduceAction286::(parser::ReduceAction::action)";
+void parser___ReduceAction286___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11464;
+  fra.me.meth = LOCATE_parser___ReduceAction286___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11466 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11467 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11468 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11469 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11470 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11471 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11472 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11473 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11475 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11475);
+  }
+  /* parser/parser.nit:11477 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11477);
+  }
+  /* parser/parser.nit:11479 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11479);
+  }
+  /* parser/parser.nit:11480 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:11481 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:11488 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:11489 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11489);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction287___action[] = "parser::ReduceAction287::(parser::ReduceAction::action)";
+void parser___ReduceAction287___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11494;
+  fra.me.meth = LOCATE_parser___ReduceAction287___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11496 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11497 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11498 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11499 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11500 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11501 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11502 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11503 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11504 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11506 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11506);
+  }
+  /* parser/parser.nit:11508 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11508);
+  }
+  /* parser/parser.nit:11509 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:11511 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11511);
+  }
+  /* parser/parser.nit:11513 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11513);
+  }
+  /* parser/parser.nit:11514 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
+  fra.me.REG[8] = fra.me.REG[3];
+  /* parser/parser.nit:11515 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], NIT_NULL, fra.me.REG[8]);
+  /* parser/parser.nit:11522 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:11523 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11523);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction288___action[] = "parser::ReduceAction288::(parser::ReduceAction::action)";
+void parser___ReduceAction288___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11528;
+  fra.me.meth = LOCATE_parser___ReduceAction288___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11530 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11531 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11532 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11533 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11534 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11536 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11536);
+  }
+  /* parser/parser.nit:11537 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:11544 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:11545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction289___action[] = "parser::ReduceAction289::(parser::ReduceAction::action)";
+void parser___ReduceAction289___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11550;
+  fra.me.meth = LOCATE_parser___ReduceAction289___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11556 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11557 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11559 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11559);
+  }
+  /* parser/parser.nit:11561 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11561);
+  }
+  /* parser/parser.nit:11562 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:11563 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:11570 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:11571 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11571);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction290___action[] = "parser::ReduceAction290::(parser::ReduceAction::action)";
+void parser___ReduceAction290___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11576;
+  fra.me.meth = LOCATE_parser___ReduceAction290___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11578 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11579 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11580 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11581 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11582 */
+  fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:11589 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11590 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11590);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction291___action[] = "parser::ReduceAction291::(parser::ReduceAction::action)";
+void parser___ReduceAction291___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11595;
+  fra.me.meth = LOCATE_parser___ReduceAction291___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11597 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11598 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11599 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11600 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11601 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11603 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11603);
+  }
+  /* parser/parser.nit:11604 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:11605 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[5]);
+  /* parser/parser.nit:11612 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:11613 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11613);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction292___action[] = "parser::ReduceAction292::(parser::ReduceAction::action)";
+void parser___ReduceAction292___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11618;
+  fra.me.meth = LOCATE_parser___ReduceAction292___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11620 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11621 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11622 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11623 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11624 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11625 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11627 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11627);
+  }
+  /* parser/parser.nit:11629 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11629);
+  }
+  /* parser/parser.nit:11630 */
+  fra.me.REG[6] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3], NIT_NULL, fra.me.REG[6]);
+  /* parser/parser.nit:11637 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:11638 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11638);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction293___action[] = "parser::ReduceAction293::(parser::ReduceAction::action)";
+void parser___ReduceAction293___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11643;
+  fra.me.meth = LOCATE_parser___ReduceAction293___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11645 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11646 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11647 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11648 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11649 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11650 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11651 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11653 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11653);
+  }
+  /* parser/parser.nit:11655 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11655);
+  }
+  /* parser/parser.nit:11656 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:11658 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11658);
+  }
+  /* parser/parser.nit:11659 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3], NIT_NULL, fra.me.REG[7]);
+  /* parser/parser.nit:11666 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:11667 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11667);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction294___action[] = "parser::ReduceAction294::(parser::ReduceAction::action)";
+void parser___ReduceAction294___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11672;
+  fra.me.meth = LOCATE_parser___ReduceAction294___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11674 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11675 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11677 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11678 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11679 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11680 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11682 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11682);
+  }
+  /* parser/parser.nit:11684 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11684);
+  }
+  /* parser/parser.nit:11686 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11686);
+  }
+  /* parser/parser.nit:11687 */
+  fra.me.REG[7] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7]);
+  /* parser/parser.nit:11694 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:11695 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11695);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction295___action[] = "parser::ReduceAction295::(parser::ReduceAction::action)";
+void parser___ReduceAction295___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11700;
+  fra.me.meth = LOCATE_parser___ReduceAction295___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11702 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11703 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11704 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11705 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11706 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11707 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11708 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11709 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11711 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11711);
+  }
+  /* parser/parser.nit:11713 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11713);
+  }
+  /* parser/parser.nit:11714 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
+  fra.me.REG[7] = fra.me.REG[5];
+  /* parser/parser.nit:11716 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11716);
+  }
+  /* parser/parser.nit:11718 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11718);
+  }
+  /* parser/parser.nit:11719 */
+  fra.me.REG[8] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8]);
+  /* parser/parser.nit:11726 */
+  fra.me.REG[2] = fra.me.REG[8];
+  /* parser/parser.nit:11727 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11727);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction296___action[] = "parser::ReduceAction296::(parser::ReduceAction::action)";
+void parser___ReduceAction296___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11732;
+  fra.me.meth = LOCATE_parser___ReduceAction296___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11734 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11735 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11736 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11737 */
+  fra.me.REG[4] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL, fra.me.REG[4]);
+  /* parser/parser.nit:11744 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11745 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11745);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction297___action[] = "parser::ReduceAction297::(parser::ReduceAction::action)";
+void parser___ReduceAction297___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11750;
+  fra.me.meth = LOCATE_parser___ReduceAction297___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11752 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11753 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11754 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11755 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11757 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11757);
+  }
+  /* parser/parser.nit:11758 */
+  fra.me.REG[5] = NEW_ASignature_parser___parser_prod___ASignature___init_asignature(NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:11765 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:11766 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11766);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction298___action[] = "parser::ReduceAction298::(parser::ReduceAction::action)";
+void parser___ReduceAction298___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11771;
+  fra.me.meth = LOCATE_parser___ReduceAction298___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11773 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11774 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11775 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11776 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11778 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:11779 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:11781 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11782 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11782);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction299___action[] = "parser::ReduceAction299::(parser::ReduceAction::action)";
+void parser___ReduceAction299___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11787;
+  fra.me.meth = LOCATE_parser___ReduceAction299___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11789 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11790 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11791 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11792 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11793 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11796 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11796);
+  }
+  /* parser/parser.nit:11797 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:11798 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:11800 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:11801 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:11802 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11802);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction300___action[] = "parser::ReduceAction300::(parser::ReduceAction::action)";
+void parser___ReduceAction300___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11807;
+  fra.me.meth = LOCATE_parser___ReduceAction300___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11809 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11810 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11811 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11812 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11814 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11815 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11815);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction301___action[] = "parser::ReduceAction301::(parser::ReduceAction::action)";
+void parser___ReduceAction301___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11820;
+  fra.me.meth = LOCATE_parser___ReduceAction301___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11822 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11823 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11825 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11825);
+  }
+  /* parser/parser.nit:11826 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:11831 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11832 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11832);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction302___action[] = "parser::ReduceAction302::(parser::ReduceAction::action)";
+void parser___ReduceAction302___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11837;
+  fra.me.meth = LOCATE_parser___ReduceAction302___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11839 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11840 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11841 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11843 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11843);
+  }
+  /* parser/parser.nit:11845 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11845);
+  }
+  /* parser/parser.nit:11846 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11851 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11852 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11852);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction303___action[] = "parser::ReduceAction303::(parser::ReduceAction::action)";
+void parser___ReduceAction303___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11857;
+  fra.me.meth = LOCATE_parser___ReduceAction303___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11859 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11860 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11861 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11862 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11864 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11864);
+  }
+  /* parser/parser.nit:11866 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11866);
+  }
+  /* parser/parser.nit:11868 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast nullable TDotdotdot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11868);
+  }
+  /* parser/parser.nit:11869 */
+  fra.me.REG[3] = NEW_AParam_parser___parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:11874 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11875 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11875);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction304___action[] = "parser::ReduceAction304::(parser::ReduceAction::action)";
+void parser___ReduceAction304___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11880;
+  fra.me.meth = LOCATE_parser___ReduceAction304___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11882 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11883 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11884 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:11886 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11886);
+  }
+  /* parser/parser.nit:11887 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:11888 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:11889 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11889);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction305___action[] = "parser::ReduceAction305::(parser::ReduceAction::action)";
+void parser___ReduceAction305___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11894;
+  fra.me.meth = LOCATE_parser___ReduceAction305___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11896 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11897 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11898 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11899 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11900 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11902 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11902);
+  }
+  /* parser/parser.nit:11904 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11904);
+  }
+  /* parser/parser.nit:11906 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11906);
+  }
+  /* parser/parser.nit:11907 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11914 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11915 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11915);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction306___action[] = "parser::ReduceAction306::(parser::ReduceAction::action)";
+void parser___ReduceAction306___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11920;
+  fra.me.meth = LOCATE_parser___ReduceAction306___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11922 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11923 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11924 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11925 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11926 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11927 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11929 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11929);
+  }
+  /* parser/parser.nit:11931 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11931);
+  }
+  /* parser/parser.nit:11933 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11933);
+  }
+  /* parser/parser.nit:11935 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11935);
+  }
+  /* parser/parser.nit:11936 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:11943 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11944 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11944);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction307___action[] = "parser::ReduceAction307::(parser::ReduceAction::action)";
+void parser___ReduceAction307___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11949;
+  fra.me.meth = LOCATE_parser___ReduceAction307___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11951 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11952 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11953 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11954 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11955 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11956 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11957 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11959 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11959);
+  }
+  /* parser/parser.nit:11961 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11961);
+  }
+  /* parser/parser.nit:11963 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11963);
+  }
+  /* parser/parser.nit:11965 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11965);
+  }
+  /* parser/parser.nit:11966 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:11973 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:11974 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11974);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction308___action[] = "parser::ReduceAction308::(parser::ReduceAction::action)";
+void parser___ReduceAction308___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 11979;
+  fra.me.meth = LOCATE_parser___ReduceAction308___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:11981 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:11982 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11983 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11984 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11985 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11986 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11987 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11988 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:11990 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11990);
+  }
+  /* parser/parser.nit:11992 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11992);
+  }
+  /* parser/parser.nit:11994 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11994);
+  }
+  /* parser/parser.nit:11996 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11996);
+  }
+  /* parser/parser.nit:11998 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11998);
+  }
+  /* parser/parser.nit:11999 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12006 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12007 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12007);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction309___action[] = "parser::ReduceAction309::(parser::ReduceAction::action)";
+void parser___ReduceAction309___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12012;
+  fra.me.meth = LOCATE_parser___ReduceAction309___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12014 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12015 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12016 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12017 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12018 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12019 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12020 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12021 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12023 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12023);
+  }
+  /* parser/parser.nit:12025 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12025);
+  }
+  /* parser/parser.nit:12027 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12027);
+  }
+  /* parser/parser.nit:12029 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12029);
+  }
+  /* parser/parser.nit:12030 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12037 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12038 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12038);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction310___action[] = "parser::ReduceAction310::(parser::ReduceAction::action)";
+void parser___ReduceAction310___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12043;
+  fra.me.meth = LOCATE_parser___ReduceAction310___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12045 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12046 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12047 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12048 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12049 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12050 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12051 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12052 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12053 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12055 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12055);
+  }
+  /* parser/parser.nit:12057 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12057);
+  }
+  /* parser/parser.nit:12059 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12059);
+  }
+  /* parser/parser.nit:12061 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12061);
+  }
+  /* parser/parser.nit:12063 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12063);
+  }
+  /* parser/parser.nit:12064 */
+  fra.me.REG[3] = NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12071 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12072 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12072);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction311___action[] = "parser::ReduceAction311::(parser::ReduceAction::action)";
+void parser___ReduceAction311___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12077;
+  fra.me.meth = LOCATE_parser___ReduceAction311___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12079 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12080 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12082 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12082);
+  }
+  /* parser/parser.nit:12083 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12087 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12088 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12088);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction312___action[] = "parser::ReduceAction312::(parser::ReduceAction::action)";
+void parser___ReduceAction312___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12093;
+  fra.me.meth = LOCATE_parser___ReduceAction312___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12095 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12096 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12097 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12098 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12099 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12101 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12101);
+  }
+  /* parser/parser.nit:12103 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12103);
+  }
+  /* parser/parser.nit:12104 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12105 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:12107 */
+  fra.me.REG[5] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[4], fra.me.REG[5]);
+  /* parser/parser.nit:12111 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12112 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12112);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction313___action[] = "parser::ReduceAction313::(parser::ReduceAction::action)";
+void parser___ReduceAction313___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12117;
+  fra.me.meth = LOCATE_parser___ReduceAction313___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12119 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12120 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12121 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12122 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12123 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12124 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12126 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwimport, ID_parser___parser_nodes___TKwimport)) /*cast nullable TKwimport*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12126);
+  }
+  /* parser/parser.nit:12128 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExternCall, ID_parser___parser_nodes___AExternCall)) /*cast nullable AExternCall*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12128);
+  }
+  /* parser/parser.nit:12130 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12130);
+  }
+  /* parser/parser.nit:12131 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12132 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:12134 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:12135 */
+  fra.me.REG[6] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[5], fra.me.REG[6]);
+  /* parser/parser.nit:12139 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:12140 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12140);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction314___action[] = "parser::ReduceAction314::(parser::ReduceAction::action)";
+void parser___ReduceAction314___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12145;
+  fra.me.meth = LOCATE_parser___ReduceAction314___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12147 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12148 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12149 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12150 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12152 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12153 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12153);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction315___action[] = "parser::ReduceAction315::(parser::ReduceAction::action)";
+void parser___ReduceAction315___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12158;
+  fra.me.meth = LOCATE_parser___ReduceAction315___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12160 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12161 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12163 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12164 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12164);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction317___action[] = "parser::ReduceAction317::(parser::ReduceAction::action)";
+void parser___ReduceAction317___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12169;
+  fra.me.meth = LOCATE_parser___ReduceAction317___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12171 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12172 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12174 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12174);
+  }
+  /* parser/parser.nit:12175 */
+  fra.me.REG[3] = NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:12178 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12179 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12179);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction318___action[] = "parser::ReduceAction318::(parser::ReduceAction::action)";
+void parser___ReduceAction318___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12184;
+  fra.me.meth = LOCATE_parser___ReduceAction318___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12186 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12187 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12189 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12189);
+  }
+  /* parser/parser.nit:12190 */
+  fra.me.REG[3] = NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:12193 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12194 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12194);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction319___action[] = "parser::ReduceAction319::(parser::ReduceAction::action)";
+void parser___ReduceAction319___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12199;
+  fra.me.meth = LOCATE_parser___ReduceAction319___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12201 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12202 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12203 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12204 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12206 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12206);
+  }
+  /* parser/parser.nit:12208 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12208);
+  }
+  /* parser/parser.nit:12210 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12210);
+  }
+  /* parser/parser.nit:12211 */
+  fra.me.REG[3] = NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12216 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12217 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12217);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction320___action[] = "parser::ReduceAction320::(parser::ReduceAction::action)";
+void parser___ReduceAction320___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12222;
+  fra.me.meth = LOCATE_parser___ReduceAction320___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12224 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12225 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12227 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12227);
+  }
+  /* parser/parser.nit:12228 */
+  fra.me.REG[3] = NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[3]);
+  /* parser/parser.nit:12231 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12232 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12232);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction321___action[] = "parser::ReduceAction321::(parser::ReduceAction::action)";
+void parser___ReduceAction321___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12237;
+  fra.me.meth = LOCATE_parser___ReduceAction321___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12239 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12240 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12241 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12242 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12243 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12244 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12245 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12246 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12247 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12249 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12249);
+  }
+  /* parser/parser.nit:12251 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12251);
+  }
+  /* parser/parser.nit:12253 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12253);
+  }
+  /* parser/parser.nit:12254 */
+  fra.me.REG[3] = NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12259 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12260 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12260);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction322___action[] = "parser::ReduceAction322::(parser::ReduceAction::action)";
+void parser___ReduceAction322___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12265;
+  fra.me.meth = LOCATE_parser___ReduceAction322___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12267 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12268 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12269 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12270 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12271 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12273 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12273);
+  }
+  /* parser/parser.nit:12275 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12275);
+  }
+  /* parser/parser.nit:12277 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12277);
+  }
+  /* parser/parser.nit:12278 */
+  fra.me.REG[3] = NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12283 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12284 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12284);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction323___action[] = "parser::ReduceAction323::(parser::ReduceAction::action)";
+void parser___ReduceAction323___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12289;
+  fra.me.meth = LOCATE_parser___ReduceAction323___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12291 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12292 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12293 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12294 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12295 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12296 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12297 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12299 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12299);
+  }
+  /* parser/parser.nit:12301 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12301);
+  }
+  /* parser/parser.nit:12303 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12303);
+  }
+  /* parser/parser.nit:12305 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12305);
+  }
+  /* parser/parser.nit:12306 */
+  fra.me.REG[3] = NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12312 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12313 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12313);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction324___action[] = "parser::ReduceAction324::(parser::ReduceAction::action)";
+void parser___ReduceAction324___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12318;
+  fra.me.meth = LOCATE_parser___ReduceAction324___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12320 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12321 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12322 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12324 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwin, ID_parser___parser_nodes___TKwin)) /*cast nullable TKwin*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12324);
+  }
+  /* parser/parser.nit:12326 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12326);
+  }
+  /* parser/parser.nit:12327 */
+  fra.me.REG[3] = NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12331 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12332 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12332);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction325___action[] = "parser::ReduceAction325::(parser::ReduceAction::action)";
+void parser___ReduceAction325___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12337;
+  fra.me.meth = LOCATE_parser___ReduceAction325___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12339 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12340 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12342 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12342);
+  }
+  /* parser/parser.nit:12343 */
+  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12347 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12348 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12348);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction326___action[] = "parser::ReduceAction326::(parser::ReduceAction::action)";
+void parser___ReduceAction326___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12353;
+  fra.me.meth = LOCATE_parser___ReduceAction326___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12355 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12356 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12357 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12359 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AInLanguage, ID_parser___parser_nodes___AInLanguage)) /*cast nullable AInLanguage*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12359);
+  }
+  /* parser/parser.nit:12361 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TExternCodeSegment, ID_parser___parser_nodes___TExternCodeSegment)) /*cast nullable TExternCodeSegment*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12361);
+  }
+  /* parser/parser.nit:12362 */
+  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12366 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12367 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12367);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction327___action[] = "parser::ReduceAction327::(parser::ReduceAction::action)";
+void parser___ReduceAction327___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12372;
+  fra.me.meth = LOCATE_parser___ReduceAction327___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12374 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12375 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12378 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12379 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12379);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction328___action[] = "parser::ReduceAction328::(parser::ReduceAction::action)";
+void parser___ReduceAction328___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12384;
+  fra.me.meth = LOCATE_parser___ReduceAction328___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12386 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12387 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12388 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12390 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12390);
+  }
+  /* parser/parser.nit:12391 */
+  fra.me.REG[4] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:12396 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:12397 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12397);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction329___action[] = "parser::ReduceAction329::(parser::ReduceAction::action)";
+void parser___ReduceAction329___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12402;
+  fra.me.meth = LOCATE_parser___ReduceAction329___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12404 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12405 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12406 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12407 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12409 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12409);
+  }
+  /* parser/parser.nit:12411 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12411);
+  }
+  /* parser/parser.nit:12412 */
+  fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:12417 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12418 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12418);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction330___action[] = "parser::ReduceAction330::(parser::ReduceAction::action)";
+void parser___ReduceAction330___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12423;
+  fra.me.meth = LOCATE_parser___ReduceAction330___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12425 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12426 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12427 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12428 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12429 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12430 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12431 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12432 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12434 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12434);
+  }
+  /* parser/parser.nit:12436 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12436);
+  }
+  /* parser/parser.nit:12437 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:12438 */
+  fra.me.REG[5] = NEW_AType_parser___parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
+  /* parser/parser.nit:12443 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12444 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12444);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction331___action[] = "parser::ReduceAction331::(parser::ReduceAction::action)";
+void parser___ReduceAction331___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12449;
+  fra.me.meth = LOCATE_parser___ReduceAction331___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12451 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12452 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12453 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12454 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12455 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12456 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12457 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12458 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12459 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12461 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnullable, ID_parser___parser_nodes___TKwnullable)) /*cast nullable TKwnullable*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12461);
+  }
+  /* parser/parser.nit:12463 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12463);
+  }
+  /* parser/parser.nit:12465 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12465);
+  }
+  /* parser/parser.nit:12466 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:12467 */
+  fra.me.REG[6] = NEW_AType_parser___parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:12472 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:12473 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12473);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction332___action[] = "parser::ReduceAction332::(parser::ReduceAction::action)";
+void parser___ReduceAction332___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12478;
+  fra.me.meth = LOCATE_parser___ReduceAction332___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12480 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12481 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12482 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12484 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12485 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:12487 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:12488 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12488);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction333___action[] = "parser::ReduceAction333::(parser::ReduceAction::action)";
+void parser___ReduceAction333___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12493;
+  fra.me.meth = LOCATE_parser___ReduceAction333___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12495 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12496 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12497 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12498 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12501 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12501);
+  }
+  /* parser/parser.nit:12502 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12503 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:12505 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:12506 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12507 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12507);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction334___action[] = "parser::ReduceAction334::(parser::ReduceAction::action)";
+void parser___ReduceAction334___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12512;
+  fra.me.meth = LOCATE_parser___ReduceAction334___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12514 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12515 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12516 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12517 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12519 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12520 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12520);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction336___action[] = "parser::ReduceAction336::(parser::ReduceAction::action)";
+void parser___ReduceAction336___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12525;
+  fra.me.meth = LOCATE_parser___ReduceAction336___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12527 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12528 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12529 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12531 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12532 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12532);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction337___action[] = "parser::ReduceAction337::(parser::ReduceAction::action)";
+void parser___ReduceAction337___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12537;
+  fra.me.meth = LOCATE_parser___ReduceAction337___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12539 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12540 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12541 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12542 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12544 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12544);
+  }
+  /* parser/parser.nit:12545 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12549 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12550 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12550);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction338___action[] = "parser::ReduceAction338::(parser::ReduceAction::action)";
+void parser___ReduceAction338___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12555;
+  fra.me.meth = LOCATE_parser___ReduceAction338___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12557 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12558 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12559 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12561 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12561);
+  }
+  /* parser/parser.nit:12562 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12566 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12567 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12567);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction339___action[] = "parser::ReduceAction339::(parser::ReduceAction::action)";
+void parser___ReduceAction339___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12572;
+  fra.me.meth = LOCATE_parser___ReduceAction339___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12574 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12575 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12577 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12578 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12578);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction340___action[] = "parser::ReduceAction340::(parser::ReduceAction::action)";
+void parser___ReduceAction340___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12583;
+  fra.me.meth = LOCATE_parser___ReduceAction340___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12585 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12586 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12587 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12589 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12589);
+  }
+  /* parser/parser.nit:12590 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12591 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:12593 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:12597 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:12598 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12598);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction341___action[] = "parser::ReduceAction341::(parser::ReduceAction::action)";
+void parser___ReduceAction341___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12603;
+  fra.me.meth = LOCATE_parser___ReduceAction341___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12605 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12606 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12607 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12608 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12610 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12610);
+  }
+  /* parser/parser.nit:12612 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12612);
+  }
+  /* parser/parser.nit:12613 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12614 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:12616 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:12617 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:12621 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12622 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12622);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction342___action[] = "parser::ReduceAction342::(parser::ReduceAction::action)";
+void parser___ReduceAction342___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12627;
+  fra.me.meth = LOCATE_parser___ReduceAction342___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12629 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12630 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12631 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12632 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12634 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12634);
+  }
+  /* parser/parser.nit:12635 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12636 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:12638 */
+  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:12642 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:12643 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12643);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction343___action[] = "parser::ReduceAction343::(parser::ReduceAction::action)";
+void parser___ReduceAction343___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12648;
+  fra.me.meth = LOCATE_parser___ReduceAction343___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12650 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12651 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12652 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12653 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12654 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12656 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12656);
+  }
+  /* parser/parser.nit:12658 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12658);
+  }
+  /* parser/parser.nit:12659 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12660 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:12662 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:12663 */
+  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
+  /* parser/parser.nit:12667 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12668 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12668);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction344___action[] = "parser::ReduceAction344::(parser::ReduceAction::action)";
+void parser___ReduceAction344___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12673;
+  fra.me.meth = LOCATE_parser___ReduceAction344___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12675 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12676 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12677 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12678 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12679 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12681 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12681);
+  }
+  /* parser/parser.nit:12682 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12683 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:12686 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12686);
+  }
+  /* parser/parser.nit:12687 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:12691 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12692 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12692);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction345___action[] = "parser::ReduceAction345::(parser::ReduceAction::action)";
+void parser___ReduceAction345___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12697;
+  fra.me.meth = LOCATE_parser___ReduceAction345___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12699 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12700 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12701 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12702 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12703 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12704 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12706 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12706);
+  }
+  /* parser/parser.nit:12708 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12708);
+  }
+  /* parser/parser.nit:12709 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:12710 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  }
+  /* parser/parser.nit:12712 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:12714 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwend, ID_parser___parser_nodes___TKwend)) /*cast nullable TKwend*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12714);
+  }
+  /* parser/parser.nit:12715 */
+  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:12719 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12720 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12720);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction349___action[] = "parser::ReduceAction349::(parser::ReduceAction::action)";
+void parser___ReduceAction349___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12725;
+  fra.me.meth = LOCATE_parser___ReduceAction349___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12727 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12728 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12730 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12730);
+  }
+  /* parser/parser.nit:12731 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:12735 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12736 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12736);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction350___action[] = "parser::ReduceAction350::(parser::ReduceAction::action)";
+void parser___ReduceAction350___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12741;
+  fra.me.meth = LOCATE_parser___ReduceAction350___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12743 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12744 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12745 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12747 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwreturn, ID_parser___parser_nodes___TKwreturn)) /*cast nullable TKwreturn*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12747);
+  }
+  /* parser/parser.nit:12749 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12749);
+  }
+  /* parser/parser.nit:12750 */
+  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12754 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12755 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12755);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction351___action[] = "parser::ReduceAction351::(parser::ReduceAction::action)";
+void parser___ReduceAction351___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12760;
+  fra.me.meth = LOCATE_parser___ReduceAction351___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12762 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12763 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12765 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12765);
+  }
+  /* parser/parser.nit:12766 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12771 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12772 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12772);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction352___action[] = "parser::ReduceAction352::(parser::ReduceAction::action)";
+void parser___ReduceAction352___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12777;
+  fra.me.meth = LOCATE_parser___ReduceAction352___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12779 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12780 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12781 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12783 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12783);
+  }
+  /* parser/parser.nit:12785 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12785);
+  }
+  /* parser/parser.nit:12786 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:12791 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12792 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12792);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction353___action[] = "parser::ReduceAction353::(parser::ReduceAction::action)";
+void parser___ReduceAction353___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12797;
+  fra.me.meth = LOCATE_parser___ReduceAction353___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12799 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12800 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12801 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12803 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12803);
+  }
+  /* parser/parser.nit:12805 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12805);
+  }
+  /* parser/parser.nit:12806 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12811 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12812 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12812);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction354___action[] = "parser::ReduceAction354::(parser::ReduceAction::action)";
+void parser___ReduceAction354___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12817;
+  fra.me.meth = LOCATE_parser___ReduceAction354___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12819 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12820 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12821 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12822 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12824 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12824);
+  }
+  /* parser/parser.nit:12826 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12826);
+  }
+  /* parser/parser.nit:12828 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12828);
+  }
+  /* parser/parser.nit:12829 */
+  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12834 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12835 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12835);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction355___action[] = "parser::ReduceAction355::(parser::ReduceAction::action)";
+void parser___ReduceAction355___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12840;
+  fra.me.meth = LOCATE_parser___ReduceAction355___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12842 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12843 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12845 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwabort, ID_parser___parser_nodes___TKwabort)) /*cast nullable TKwabort*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12845);
+  }
+  /* parser/parser.nit:12846 */
+  fra.me.REG[3] = NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
+  /* parser/parser.nit:12849 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12850 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12850);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction356___action[] = "parser::ReduceAction356::(parser::ReduceAction::action)";
+void parser___ReduceAction356___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12855;
+  fra.me.meth = LOCATE_parser___ReduceAction356___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12857 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12858 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12860 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12860);
+  }
+  /* parser/parser.nit:12861 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:12866 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12867 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12867);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction357___action[] = "parser::ReduceAction357::(parser::ReduceAction::action)";
+void parser___ReduceAction357___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12872;
+  fra.me.meth = LOCATE_parser___ReduceAction357___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12874 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12875 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12876 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12878 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12878);
+  }
+  /* parser/parser.nit:12880 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12880);
+  }
+  /* parser/parser.nit:12881 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:12886 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12887 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12887);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction358___action[] = "parser::ReduceAction358::(parser::ReduceAction::action)";
+void parser___ReduceAction358___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12892;
+  fra.me.meth = LOCATE_parser___ReduceAction358___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12894 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12895 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12896 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12898 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12898);
+  }
+  /* parser/parser.nit:12900 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12900);
+  }
+  /* parser/parser.nit:12901 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:12906 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12907 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12907);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction359___action[] = "parser::ReduceAction359::(parser::ReduceAction::action)";
+void parser___ReduceAction359___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12912;
+  fra.me.meth = LOCATE_parser___ReduceAction359___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12914 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12915 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12916 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12917 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12919 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwcontinue, ID_parser___parser_nodes___TKwcontinue)) /*cast nullable TKwcontinue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12919);
+  }
+  /* parser/parser.nit:12921 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12921);
+  }
+  /* parser/parser.nit:12923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12923);
+  }
+  /* parser/parser.nit:12924 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:12929 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:12930 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12930);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction366___action[] = "parser::ReduceAction366::(parser::ReduceAction::action)";
+void parser___ReduceAction366___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12935;
+  fra.me.meth = LOCATE_parser___ReduceAction366___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12937 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12938 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12939 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12940 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12941 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12942 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12943 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12945 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12945);
+  }
+  /* parser/parser.nit:12947 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12947);
+  }
+  /* parser/parser.nit:12949 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12949);
+  }
+  /* parser/parser.nit:12950 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser.nit:12956 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:12957 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12957);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction367___action[] = "parser::ReduceAction367::(parser::ReduceAction::action)";
+void parser___ReduceAction367___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12962;
+  fra.me.meth = LOCATE_parser___ReduceAction367___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12964 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12965 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12966 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12967 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12968 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:12970 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12970);
+  }
+  /* parser/parser.nit:12972 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12972);
+  }
+  /* parser/parser.nit:12973 */
+  fra.me.REG[5] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:12979 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:12980 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12980);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction368___action[] = "parser::ReduceAction368::(parser::ReduceAction::action)";
+void parser___ReduceAction368___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 12985;
+  fra.me.meth = LOCATE_parser___ReduceAction368___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:12987 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:12988 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12989 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12990 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12991 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12992 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12993 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:12994 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:12996 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12996);
+  }
+  /* parser/parser.nit:12998 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 12998);
+  }
+  /* parser/parser.nit:13000 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13000);
+  }
+  /* parser/parser.nit:13002 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13002);
+  }
+  /* parser/parser.nit:13003 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = fra.me.REG[3];
+  /* parser/parser.nit:13004 */
+  fra.me.REG[7] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[7]);
+  /* parser/parser.nit:13010 */
+  fra.me.REG[2] = fra.me.REG[7];
+  /* parser/parser.nit:13011 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13011);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction369___action[] = "parser::ReduceAction369::(parser::ReduceAction::action)";
+void parser___ReduceAction369___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13016;
+  fra.me.meth = LOCATE_parser___ReduceAction369___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13018 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13019 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13020 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13021 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13022 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13023 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:13025 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13025);
+  }
+  /* parser/parser.nit:13027 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13027);
+  }
+  /* parser/parser.nit:13029 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13029);
+  }
+  /* parser/parser.nit:13030 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:13031 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[7], fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:13037 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:13038 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13038);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction370___action[] = "parser::ReduceAction370::(parser::ReduceAction::action)";
+void parser___ReduceAction370___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13043;
+  fra.me.meth = LOCATE_parser___ReduceAction370___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13045 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13046 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13047 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13049 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13049);
+  }
+  /* parser/parser.nit:13051 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13051);
+  }
+  /* parser/parser.nit:13052 */
+  fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13057 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13058 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13058);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction371___action[] = "parser::ReduceAction371::(parser::ReduceAction::action)";
+void parser___ReduceAction371___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13063;
+  fra.me.meth = LOCATE_parser___ReduceAction371___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13065 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13066 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13067 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13068 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13070 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AQualified, ID_parser___parser_nodes___AQualified)) /*cast nullable AQualified*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13070);
+  }
+  /* parser/parser.nit:13072 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwsuper, ID_parser___parser_nodes___TKwsuper)) /*cast nullable TKwsuper*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13072);
+  }
+  /* parser/parser.nit:13074 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13074);
+  }
+  /* parser/parser.nit:13075 */
+  fra.me.REG[3] = NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13080 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13081 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13081);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction372___action[] = "parser::ReduceAction372::(parser::ReduceAction::action)";
+void parser___ReduceAction372___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13086;
+  fra.me.meth = LOCATE_parser___ReduceAction372___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13088 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13089 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13090 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13091 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13092 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13093 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13095 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13095);
+  }
+  /* parser/parser.nit:13097 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13097);
+  }
+  /* parser/parser.nit:13099 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13099);
+  }
+  /* parser/parser.nit:13100 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13105 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13106 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13106);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction373___action[] = "parser::ReduceAction373::(parser::ReduceAction::action)";
+void parser___ReduceAction373___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13111;
+  fra.me.meth = LOCATE_parser___ReduceAction373___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13113 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13114 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13115 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13116 */
+  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:13118 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13118);
+  }
+  /* parser/parser.nit:13120 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13120);
+  }
+  /* parser/parser.nit:13121 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13126 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13127 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13127);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction374___action[] = "parser::ReduceAction374::(parser::ReduceAction::action)";
+void parser___ReduceAction374___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13132;
+  fra.me.meth = LOCATE_parser___ReduceAction374___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13134 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13135 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13136 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13137 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13138 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13139 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13141 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwdebug, ID_parser___parser_nodes___TKwdebug)) /*cast nullable TKwdebug*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13141);
+  }
+  /* parser/parser.nit:13143 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwtype, ID_parser___parser_nodes___TKwtype)) /*cast nullable TKwtype*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13143);
+  }
+  /* parser/parser.nit:13145 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13145);
+  }
+  /* parser/parser.nit:13147 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13147);
+  }
+  /* parser/parser.nit:13148 */
+  fra.me.REG[4] = NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
+  /* parser/parser.nit:13154 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:13155 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13155);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction375___action[] = "parser::ReduceAction375::(parser::ReduceAction::action)";
+void parser___ReduceAction375___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13160;
+  fra.me.meth = LOCATE_parser___ReduceAction375___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13162 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13163 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13164 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13166 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwlabel, ID_parser___parser_nodes___TKwlabel)) /*cast nullable TKwlabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13166);
+  }
+  /* parser/parser.nit:13168 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13168);
+  }
+  /* parser/parser.nit:13169 */
+  fra.me.REG[3] = NEW_ALabel_parser___parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13173 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13174 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13174);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction376___action[] = "parser::ReduceAction376::(parser::ReduceAction::action)";
+void parser___ReduceAction376___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13179;
+  fra.me.meth = LOCATE_parser___ReduceAction376___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13181 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13182 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13183 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13185 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:13186 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:13188 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:13189 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13189);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction377___action[] = "parser::ReduceAction377::(parser::ReduceAction::action)";
+void parser___ReduceAction377___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13194;
+  fra.me.meth = LOCATE_parser___ReduceAction377___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13196 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13197 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13198 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13199 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13202 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13202);
+  }
+  /* parser/parser.nit:13203 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:13204 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:13206 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:13207 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:13208 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13208);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction378___action[] = "parser::ReduceAction378::(parser::ReduceAction::action)";
+void parser___ReduceAction378___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13213;
+  fra.me.meth = LOCATE_parser___ReduceAction378___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13215 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13216 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13217 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13218 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13219 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13220 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13221 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13223 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13223);
+  }
+  /* parser/parser.nit:13225 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13225);
+  }
+  /* parser/parser.nit:13227 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13227);
+  }
+  /* parser/parser.nit:13229 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13229);
+  }
+  /* parser/parser.nit:13231 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13231);
+  }
+  /* parser/parser.nit:13232 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13240 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13241 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13241);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction379___action[] = "parser::ReduceAction379::(parser::ReduceAction::action)";
+void parser___ReduceAction379___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13246;
+  fra.me.meth = LOCATE_parser___ReduceAction379___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13248 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13249 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13250 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13251 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13252 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13253 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13254 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13255 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13256 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13257 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13259 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13259);
+  }
+  /* parser/parser.nit:13261 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13261);
+  }
+  /* parser/parser.nit:13263 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13263);
+  }
+  /* parser/parser.nit:13264 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
+  fra.me.REG[9] = fra.me.REG[6];
+  /* parser/parser.nit:13266 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13266);
+  }
+  /* parser/parser.nit:13268 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13268);
+  }
+  /* parser/parser.nit:13270 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13270);
+  }
+  /* parser/parser.nit:13271 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13279 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13280 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13280);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction380___action[] = "parser::ReduceAction380::(parser::ReduceAction::action)";
+void parser___ReduceAction380___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13285;
+  fra.me.meth = LOCATE_parser___ReduceAction380___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13287 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13288 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13289 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13290 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13291 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13292 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13293 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13294 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13296 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13296);
+  }
+  /* parser/parser.nit:13298 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13298);
+  }
+  /* parser/parser.nit:13300 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13300);
+  }
+  /* parser/parser.nit:13301 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
+  fra.me.REG[9] = fra.me.REG[6];
+  /* parser/parser.nit:13303 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13303);
+  }
+  /* parser/parser.nit:13305 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13305);
+  }
+  /* parser/parser.nit:13307 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13307);
+  }
+  /* parser/parser.nit:13308 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13316 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13317 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13317);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction381___action[] = "parser::ReduceAction381::(parser::ReduceAction::action)";
+void parser___ReduceAction381___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13322;
+  fra.me.meth = LOCATE_parser___ReduceAction381___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13324 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13325 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13326 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13327 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13328 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13329 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13331 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13331);
+  }
+  /* parser/parser.nit:13333 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13333);
+  }
+  /* parser/parser.nit:13335 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13335);
+  }
+  /* parser/parser.nit:13337 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13337);
+  }
+  /* parser/parser.nit:13338 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13346 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13347 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13347);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction382___action[] = "parser::ReduceAction382::(parser::ReduceAction::action)";
+void parser___ReduceAction382___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13352;
+  fra.me.meth = LOCATE_parser___ReduceAction382___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13354 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13355 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13356 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13357 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13358 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13359 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13360 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13361 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13362 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13364 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13364);
+  }
+  /* parser/parser.nit:13366 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13366);
+  }
+  /* parser/parser.nit:13368 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13368);
+  }
+  /* parser/parser.nit:13369 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:13371 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13371);
+  }
+  /* parser/parser.nit:13373 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13373);
+  }
+  /* parser/parser.nit:13374 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13382 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13383 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13383);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction383___action[] = "parser::ReduceAction383::(parser::ReduceAction::action)";
+void parser___ReduceAction383___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13388;
+  fra.me.meth = LOCATE_parser___ReduceAction383___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13390 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13391 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13392 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13393 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13394 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13395 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13396 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13398 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13398);
+  }
+  /* parser/parser.nit:13400 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13400);
+  }
+  /* parser/parser.nit:13402 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13402);
+  }
+  /* parser/parser.nit:13403 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:13405 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13405);
+  }
+  /* parser/parser.nit:13407 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13407);
+  }
+  /* parser/parser.nit:13408 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13416 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13417 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13417);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction384___action[] = "parser::ReduceAction384::(parser::ReduceAction::action)";
+void parser___ReduceAction384___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13422;
+  fra.me.meth = LOCATE_parser___ReduceAction384___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13424 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13425 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13426 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13427 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13428 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13429 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13430 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13432 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13432);
+  }
+  /* parser/parser.nit:13434 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13434);
+  }
+  /* parser/parser.nit:13436 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13436);
+  }
+  /* parser/parser.nit:13437 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13445 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13446 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13446);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction385___action[] = "parser::ReduceAction385::(parser::ReduceAction::action)";
+void parser___ReduceAction385___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13451;
+  fra.me.meth = LOCATE_parser___ReduceAction385___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13453 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13454 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13455 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13456 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13457 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13458 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13459 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13460 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13461 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13462 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13464 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13464);
+  }
+  /* parser/parser.nit:13466 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13466);
+  }
+  /* parser/parser.nit:13468 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13468);
+  }
+  /* parser/parser.nit:13469 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:13471 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13471);
+  }
+  /* parser/parser.nit:13472 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13480 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13481 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13481);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction386___action[] = "parser::ReduceAction386::(parser::ReduceAction::action)";
+void parser___ReduceAction386___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13486;
+  fra.me.meth = LOCATE_parser___ReduceAction386___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13488 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13489 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13490 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13491 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13492 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13493 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13494 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13495 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13497 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13497);
+  }
+  /* parser/parser.nit:13499 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13499);
+  }
+  /* parser/parser.nit:13501 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13501);
+  }
+  /* parser/parser.nit:13502 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:13504 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13504);
+  }
+  /* parser/parser.nit:13505 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13513 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13514 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13514);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction387___action[] = "parser::ReduceAction387::(parser::ReduceAction::action)";
+void parser___ReduceAction387___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13519;
+  fra.me.meth = LOCATE_parser___ReduceAction387___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13521 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13522 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13523 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13524 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13525 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13526 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13527 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13529 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13529);
+  }
+  /* parser/parser.nit:13531 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13531);
+  }
+  /* parser/parser.nit:13533 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13533);
+  }
+  /* parser/parser.nit:13535 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13535);
+  }
+  /* parser/parser.nit:13536 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13544 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction388___action[] = "parser::ReduceAction388::(parser::ReduceAction::action)";
+void parser___ReduceAction388___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13550;
+  fra.me.meth = LOCATE_parser___ReduceAction388___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13554 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13555 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13556 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13557 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13558 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13559 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13560 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13561 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13563 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13563);
+  }
+  /* parser/parser.nit:13565 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13565);
+  }
+  /* parser/parser.nit:13567 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13567);
+  }
+  /* parser/parser.nit:13568 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:13570 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13570);
+  }
+  /* parser/parser.nit:13572 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13572);
+  }
+  /* parser/parser.nit:13573 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13581 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13582 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13582);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction389___action[] = "parser::ReduceAction389::(parser::ReduceAction::action)";
+void parser___ReduceAction389___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13587;
+  fra.me.meth = LOCATE_parser___ReduceAction389___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13589 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13590 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13591 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13592 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13593 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13594 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13595 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13596 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13598 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13598);
+  }
+  /* parser/parser.nit:13600 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13600);
+  }
+  /* parser/parser.nit:13602 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13602);
+  }
+  /* parser/parser.nit:13603 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
+  fra.me.REG[8] = fra.me.REG[5];
+  /* parser/parser.nit:13605 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13605);
+  }
+  /* parser/parser.nit:13607 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13607);
+  }
+  /* parser/parser.nit:13608 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:13616 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13617 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13617);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction390___action[] = "parser::ReduceAction390::(parser::ReduceAction::action)";
+void parser___ReduceAction390___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13622;
+  fra.me.meth = LOCATE_parser___ReduceAction390___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13624 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13625 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13626 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13627 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13628 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13629 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13631 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13631);
+  }
+  /* parser/parser.nit:13633 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13633);
+  }
+  /* parser/parser.nit:13635 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13635);
+  }
+  /* parser/parser.nit:13636 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13644 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13645 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13645);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction391___action[] = "parser::ReduceAction391::(parser::ReduceAction::action)";
+void parser___ReduceAction391___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13650;
+  fra.me.meth = LOCATE_parser___ReduceAction391___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13652 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13653 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13654 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13655 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13656 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13657 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13658 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13659 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13660 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13662 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13662);
+  }
+  /* parser/parser.nit:13664 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13664);
+  }
+  /* parser/parser.nit:13666 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13666);
+  }
+  /* parser/parser.nit:13667 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:13669 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13669);
+  }
+  /* parser/parser.nit:13670 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13678 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13679 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13679);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction392___action[] = "parser::ReduceAction392::(parser::ReduceAction::action)";
+void parser___ReduceAction392___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13684;
+  fra.me.meth = LOCATE_parser___ReduceAction392___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13686 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13687 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13688 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13689 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13690 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13691 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13692 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:13694 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TBang, ID_parser___parser_nodes___TBang)) /*cast nullable TBang*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13694);
+  }
+  /* parser/parser.nit:13696 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AClosureId, ID_parser___parser_nodes___AClosureId)) /*cast nullable AClosureId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13696);
+  }
+  /* parser/parser.nit:13698 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13698);
+  }
+  /* parser/parser.nit:13699 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
+  fra.me.REG[7] = fra.me.REG[4];
+  /* parser/parser.nit:13701 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13701);
+  }
+  /* parser/parser.nit:13702 */
+  fra.me.REG[3] = NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13710 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13711 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13711);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction393___action[] = "parser::ReduceAction393::(parser::ReduceAction::action)";
+void parser___ReduceAction393___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13716;
+  fra.me.meth = LOCATE_parser___ReduceAction393___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13718 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13719 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13721 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13721);
+  }
+  /* parser/parser.nit:13722 */
+  fra.me.REG[3] = NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
+  /* parser/parser.nit:13725 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13726 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13726);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction394___action[] = "parser::ReduceAction394::(parser::ReduceAction::action)";
+void parser___ReduceAction394___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13731;
+  fra.me.meth = LOCATE_parser___ReduceAction394___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13733 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13734 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13736 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwbreak, ID_parser___parser_nodes___TKwbreak)) /*cast nullable TKwbreak*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13736);
+  }
+  /* parser/parser.nit:13737 */
+  fra.me.REG[3] = NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
+  /* parser/parser.nit:13740 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13741 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13741);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction395___action[] = "parser::ReduceAction395::(parser::ReduceAction::action)";
+void parser___ReduceAction395___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13746;
+  fra.me.meth = LOCATE_parser___ReduceAction395___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13748 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13749 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13751 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13751);
+  }
+  /* parser/parser.nit:13752 */
+  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:13757 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13758 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13758);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction396___action[] = "parser::ReduceAction396::(parser::ReduceAction::action)";
+void parser___ReduceAction396___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13763;
+  fra.me.meth = LOCATE_parser___ReduceAction396___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13765 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13766 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13767 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13769 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13769);
+  }
+  /* parser/parser.nit:13771 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13771);
+  }
+  /* parser/parser.nit:13772 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13779 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13780 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13780);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction397___action[] = "parser::ReduceAction397::(parser::ReduceAction::action)";
+void parser___ReduceAction397___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13785;
+  fra.me.meth = LOCATE_parser___ReduceAction397___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13787 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13788 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13789 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13790 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13792 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13792);
+  }
+  /* parser/parser.nit:13794 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13794);
+  }
+  /* parser/parser.nit:13796 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13796);
+  }
+  /* parser/parser.nit:13797 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
+  /* parser/parser.nit:13804 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13805 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13805);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction398___action[] = "parser::ReduceAction398::(parser::ReduceAction::action)";
+void parser___ReduceAction398___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13810;
+  fra.me.meth = LOCATE_parser___ReduceAction398___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13812 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13813 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13814 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13815 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13816 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13817 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13819 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13819);
+  }
+  /* parser/parser.nit:13821 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13821);
+  }
+  /* parser/parser.nit:13823 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13823);
+  }
+  /* parser/parser.nit:13825 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13825);
+  }
+  /* parser/parser.nit:13826 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13833 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13834 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13834);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction399___action[] = "parser::ReduceAction399::(parser::ReduceAction::action)";
+void parser___ReduceAction399___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13839;
+  fra.me.meth = LOCATE_parser___ReduceAction399___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13841 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13842 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13843 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13844 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13845 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13846 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13847 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13849 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwvar, ID_parser___parser_nodes___TKwvar)) /*cast nullable TKwvar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13849);
+  }
+  /* parser/parser.nit:13851 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13851);
+  }
+  /* parser/parser.nit:13853 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13853);
+  }
+  /* parser/parser.nit:13855 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13855);
+  }
+  /* parser/parser.nit:13857 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13857);
+  }
+  /* parser/parser.nit:13858 */
+  fra.me.REG[3] = NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13865 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13866 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13866);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction400___action[] = "parser::ReduceAction400::(parser::ReduceAction::action)";
+void parser___ReduceAction400___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13871;
+  fra.me.meth = LOCATE_parser___ReduceAction400___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13873 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13874 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13875 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13876 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13877 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13878 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13879 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13881 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13881);
+  }
+  /* parser/parser.nit:13883 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13883);
+  }
+  /* parser/parser.nit:13885 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13885);
+  }
+  /* parser/parser.nit:13887 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13887);
+  }
+  /* parser/parser.nit:13888 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13894 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13895 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13895);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction401___action[] = "parser::ReduceAction401::(parser::ReduceAction::action)";
+void parser___ReduceAction401___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13900;
+  fra.me.meth = LOCATE_parser___ReduceAction401___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13902 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13903 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13904 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13905 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13906 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:13908 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13908);
+  }
+  /* parser/parser.nit:13910 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13910);
+  }
+  /* parser/parser.nit:13912 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13912);
+  }
+  /* parser/parser.nit:13913 */
+  fra.me.REG[3] = NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13919 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13920 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13920);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction402___action[] = "parser::ReduceAction402::(parser::ReduceAction::action)";
+void parser___ReduceAction402___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13925;
+  fra.me.meth = LOCATE_parser___ReduceAction402___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13927 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13928 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13929 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13930 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13931 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13932 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13933 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13934 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13936 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13936);
+  }
+  /* parser/parser.nit:13938 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13938);
+  }
+  /* parser/parser.nit:13940 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13940);
+  }
+  /* parser/parser.nit:13942 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13942);
+  }
+  /* parser/parser.nit:13944 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13944);
+  }
+  /* parser/parser.nit:13945 */
+  fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13952 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13953 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13953);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction403___action[] = "parser::ReduceAction403::(parser::ReduceAction::action)";
+void parser___ReduceAction403___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13958;
+  fra.me.meth = LOCATE_parser___ReduceAction403___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13960 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13961 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13962 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13963 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13964 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13965 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:13967 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13967);
+  }
+  /* parser/parser.nit:13969 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13969);
+  }
+  /* parser/parser.nit:13971 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13971);
+  }
+  /* parser/parser.nit:13973 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13973);
+  }
+  /* parser/parser.nit:13974 */
+  fra.me.REG[3] = NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:13981 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:13982 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13982);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction404___action[] = "parser::ReduceAction404::(parser::ReduceAction::action)";
+void parser___ReduceAction404___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 13987;
+  fra.me.meth = LOCATE_parser___ReduceAction404___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:13989 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:13990 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13991 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13992 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13993 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:13995 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13995);
+  }
+  /* parser/parser.nit:13997 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13997);
+  }
+  /* parser/parser.nit:13999 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TAssign, ID_parser___parser_nodes___TAssign)) /*cast nullable TAssign*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 13999);
+  }
+  /* parser/parser.nit:14001 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14001);
+  }
+  /* parser/parser.nit:14002 */
+  fra.me.REG[3] = NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14008 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14009 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14009);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction405___action[] = "parser::ReduceAction405::(parser::ReduceAction::action)";
+void parser___ReduceAction405___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14014;
+  fra.me.meth = LOCATE_parser___ReduceAction405___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14016 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14017 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14018 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14019 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14020 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14021 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14022 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14024 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14024);
+  }
+  /* parser/parser.nit:14026 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14026);
+  }
+  /* parser/parser.nit:14028 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14028);
+  }
+  /* parser/parser.nit:14030 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14030);
+  }
+  /* parser/parser.nit:14031 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14037 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14038 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14038);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction406___action[] = "parser::ReduceAction406::(parser::ReduceAction::action)";
+void parser___ReduceAction406___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14043;
+  fra.me.meth = LOCATE_parser___ReduceAction406___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14045 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14046 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14047 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14048 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14049 */
+  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:14051 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14051);
+  }
+  /* parser/parser.nit:14053 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14053);
+  }
+  /* parser/parser.nit:14055 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14055);
+  }
+  /* parser/parser.nit:14056 */
+  fra.me.REG[3] = NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14062 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14063 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14063);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction407___action[] = "parser::ReduceAction407::(parser::ReduceAction::action)";
+void parser___ReduceAction407___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14068;
+  fra.me.meth = LOCATE_parser___ReduceAction407___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14070 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14071 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14072 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14073 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14074 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14075 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14076 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14077 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14079 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14079);
+  }
+  /* parser/parser.nit:14081 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14081);
+  }
+  /* parser/parser.nit:14083 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14083);
+  }
+  /* parser/parser.nit:14085 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14085);
+  }
+  /* parser/parser.nit:14087 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14087);
+  }
+  /* parser/parser.nit:14088 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14095 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14096 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14096);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction408___action[] = "parser::ReduceAction408::(parser::ReduceAction::action)";
+void parser___ReduceAction408___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14101;
+  fra.me.meth = LOCATE_parser___ReduceAction408___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14103 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14104 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14105 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14106 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14107 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14108 */
+  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:14110 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14110);
+  }
+  /* parser/parser.nit:14112 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14112);
+  }
+  /* parser/parser.nit:14114 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14114);
+  }
+  /* parser/parser.nit:14116 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14116);
+  }
+  /* parser/parser.nit:14117 */
+  fra.me.REG[3] = NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14124 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14125 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14125);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction409___action[] = "parser::ReduceAction409::(parser::ReduceAction::action)";
+void parser___ReduceAction409___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14130;
+  fra.me.meth = LOCATE_parser___ReduceAction409___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14132 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14133 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14134 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14135 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14136 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14138 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14138);
+  }
+  /* parser/parser.nit:14140 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14140);
+  }
+  /* parser/parser.nit:14142 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AAssignOp, ID_parser___parser_nodes___AAssignOp)) /*cast nullable AAssignOp*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14142);
+  }
+  /* parser/parser.nit:14144 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14144);
+  }
+  /* parser/parser.nit:14145 */
+  fra.me.REG[3] = NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14151 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14152 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14152);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction410___action[] = "parser::ReduceAction410::(parser::ReduceAction::action)";
+void parser___ReduceAction410___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14157;
+  fra.me.meth = LOCATE_parser___ReduceAction410___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14159 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14160 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14162 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TPluseq, ID_parser___parser_nodes___TPluseq)) /*cast nullable TPluseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14162);
+  }
+  /* parser/parser.nit:14163 */
+  fra.me.REG[3] = NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
+  /* parser/parser.nit:14166 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14167 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14167);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction411___action[] = "parser::ReduceAction411::(parser::ReduceAction::action)";
+void parser___ReduceAction411___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14172;
+  fra.me.meth = LOCATE_parser___ReduceAction411___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14174 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14175 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14177 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMinuseq, ID_parser___parser_nodes___TMinuseq)) /*cast nullable TMinuseq*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14177);
+  }
+  /* parser/parser.nit:14178 */
+  fra.me.REG[3] = NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
+  /* parser/parser.nit:14181 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14182 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14182);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction412___action[] = "parser::ReduceAction412::(parser::ReduceAction::action)";
+void parser___ReduceAction412___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14187;
+  fra.me.meth = LOCATE_parser___ReduceAction412___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14189 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14190 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14191 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14192 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14194 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14194);
+  }
+  /* parser/parser.nit:14196 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14196);
+  }
+  /* parser/parser.nit:14198 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14198);
+  }
+  /* parser/parser.nit:14199 */
+  fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14204 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14205 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14205);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction413___action[] = "parser::ReduceAction413::(parser::ReduceAction::action)";
+void parser___ReduceAction413___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14210;
+  fra.me.meth = LOCATE_parser___ReduceAction413___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14212 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14213 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14214 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14216 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14216);
+  }
+  /* parser/parser.nit:14218 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14218);
+  }
+  /* parser/parser.nit:14219 */
+  fra.me.REG[3] = NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14224 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14225 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14225);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction414___action[] = "parser::ReduceAction414::(parser::ReduceAction::action)";
+void parser___ReduceAction414___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14230;
+  fra.me.meth = LOCATE_parser___ReduceAction414___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14232 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14233 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14234 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14235 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14236 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14237 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14238 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14239 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14240 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14242 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14242);
+  }
+  /* parser/parser.nit:14244 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14244);
+  }
+  /* parser/parser.nit:14246 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14246);
+  }
+  /* parser/parser.nit:14248 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14248);
+  }
+  /* parser/parser.nit:14249 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14255 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14256 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14256);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction415___action[] = "parser::ReduceAction415::(parser::ReduceAction::action)";
+void parser___ReduceAction415___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14261;
+  fra.me.meth = LOCATE_parser___ReduceAction415___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14263 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14264 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14266 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14267 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14268 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14269 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14271 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14271);
+  }
+  /* parser/parser.nit:14273 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14273);
+  }
+  /* parser/parser.nit:14275 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14275);
+  }
+  /* parser/parser.nit:14276 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14282 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14283 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14283);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction416___action[] = "parser::ReduceAction416::(parser::ReduceAction::action)";
+void parser___ReduceAction416___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14288;
+  fra.me.meth = LOCATE_parser___ReduceAction416___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14290 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14291 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14292 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14293 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14294 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14295 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14296 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14297 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14298 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14300 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14300);
+  }
+  /* parser/parser.nit:14302 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14302);
+  }
+  /* parser/parser.nit:14304 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14304);
+  }
+  /* parser/parser.nit:14306 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14306);
+  }
+  /* parser/parser.nit:14307 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14313 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14314 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14314);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction417___action[] = "parser::ReduceAction417::(parser::ReduceAction::action)";
+void parser___ReduceAction417___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14319;
+  fra.me.meth = LOCATE_parser___ReduceAction417___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14321 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14322 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14323 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14324 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14325 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14326 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14327 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14329 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14329);
+  }
+  /* parser/parser.nit:14331 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14331);
+  }
+  /* parser/parser.nit:14333 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14333);
+  }
+  /* parser/parser.nit:14334 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14340 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14341 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14341);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction418___action[] = "parser::ReduceAction418::(parser::ReduceAction::action)";
+void parser___ReduceAction418___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14346;
+  fra.me.meth = LOCATE_parser___ReduceAction418___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14348 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14349 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14350 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14351 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14352 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14353 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14354 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14355 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14357 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14357);
+  }
+  /* parser/parser.nit:14359 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14359);
+  }
+  /* parser/parser.nit:14361 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14361);
+  }
+  /* parser/parser.nit:14362 */
+  fra.me.REG[3] = NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:14368 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14369 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14369);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction421___action[] = "parser::ReduceAction421::(parser::ReduceAction::action)";
+void parser___ReduceAction421___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14374;
+  fra.me.meth = LOCATE_parser___ReduceAction421___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14376 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14377 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14378 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14379 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14381 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14381);
+  }
+  /* parser/parser.nit:14383 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14383);
+  }
+  /* parser/parser.nit:14385 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14385);
+  }
+  /* parser/parser.nit:14386 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14391 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14392 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14392);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction422___action[] = "parser::ReduceAction422::(parser::ReduceAction::action)";
+void parser___ReduceAction422___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14397;
+  fra.me.meth = LOCATE_parser___ReduceAction422___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14399 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14400 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14401 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14403 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwloop, ID_parser___parser_nodes___TKwloop)) /*cast nullable TKwloop*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14403);
+  }
+  /* parser/parser.nit:14405 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14405);
+  }
+  /* parser/parser.nit:14406 */
+  fra.me.REG[3] = NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14411 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14412 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14412);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction423___action[] = "parser::ReduceAction423::(parser::ReduceAction::action)";
+void parser___ReduceAction423___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14417;
+  fra.me.meth = LOCATE_parser___ReduceAction423___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14419 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14420 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14421 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14422 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14423 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14424 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14425 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14426 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14428 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14428);
+  }
+  /* parser/parser.nit:14430 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14430);
+  }
+  /* parser/parser.nit:14432 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14432);
+  }
+  /* parser/parser.nit:14434 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14434);
+  }
+  /* parser/parser.nit:14436 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14436);
+  }
+  /* parser/parser.nit:14437 */
+  fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14444 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14445 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14445);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction424___action[] = "parser::ReduceAction424::(parser::ReduceAction::action)";
+void parser___ReduceAction424___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14450;
+  fra.me.meth = LOCATE_parser___ReduceAction424___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14452 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14453 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14454 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14455 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14456 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14457 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14458 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14460 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwwhile, ID_parser___parser_nodes___TKwwhile)) /*cast nullable TKwwhile*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14460);
+  }
+  /* parser/parser.nit:14462 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14462);
+  }
+  /* parser/parser.nit:14464 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14464);
+  }
+  /* parser/parser.nit:14466 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14466);
+  }
+  /* parser/parser.nit:14467 */
+  fra.me.REG[3] = NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14474 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14475 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14475);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction425___action[] = "parser::ReduceAction425::(parser::ReduceAction::action)";
+void parser___ReduceAction425___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14480;
+  fra.me.meth = LOCATE_parser___ReduceAction425___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14482 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14483 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14484 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14485 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14486 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14487 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14488 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14489 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14490 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14491 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14492 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14493 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14494 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14495 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14496 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:14498 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14498);
+  }
+  /* parser/parser.nit:14500 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14500);
+  }
+  /* parser/parser.nit:14501 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:14503 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14503);
+  }
+  /* parser/parser.nit:14505 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14505);
+  }
+  /* parser/parser.nit:14507 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14507);
+  }
+  /* parser/parser.nit:14509 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14509);
+  }
+  /* parser/parser.nit:14510 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14518 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14519 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14519);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction426___action[] = "parser::ReduceAction426::(parser::ReduceAction::action)";
+void parser___ReduceAction426___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14524;
+  fra.me.meth = LOCATE_parser___ReduceAction426___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14526 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14527 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14528 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14529 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14530 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14531 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14532 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14533 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14534 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14535 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14536 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14537 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14538 */
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:14540 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14540);
+  }
+  /* parser/parser.nit:14542 */
+  REGB0 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14542);
+  }
+  /* parser/parser.nit:14543 */
+  fra.me.REG[7] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[7]);
+  fra.me.REG[9] = fra.me.REG[7];
+  /* parser/parser.nit:14545 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14545);
+  }
+  /* parser/parser.nit:14547 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14547);
+  }
+  /* parser/parser.nit:14549 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14549);
+  }
+  /* parser/parser.nit:14551 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast nullable ALabel*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14551);
+  }
+  /* parser/parser.nit:14552 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[9], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14560 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14561 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14561);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction427___action[] = "parser::ReduceAction427::(parser::ReduceAction::action)";
+void parser___ReduceAction427___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14566;
+  fra.me.meth = LOCATE_parser___ReduceAction427___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14568 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14569 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14570 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14571 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14572 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14573 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14574 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14575 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14576 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14577 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14578 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14579 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14580 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14581 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:14583 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14583);
+  }
+  /* parser/parser.nit:14585 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14585);
+  }
+  /* parser/parser.nit:14586 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:14588 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14588);
+  }
+  /* parser/parser.nit:14590 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14590);
+  }
+  /* parser/parser.nit:14592 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14592);
+  }
+  /* parser/parser.nit:14593 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14601 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14602 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14602);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction428___action[] = "parser::ReduceAction428::(parser::ReduceAction::action)";
+void parser___ReduceAction428___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14607;
+  fra.me.meth = LOCATE_parser___ReduceAction428___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14609 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14610 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14611 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14612 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14613 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14614 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14615 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14616 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14617 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14618 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14619 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14620 */
+  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:14622 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwfor, ID_parser___parser_nodes___TKwfor)) /*cast nullable TKwfor*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14622);
+  }
+  /* parser/parser.nit:14624 */
+  REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14624);
+  }
+  /* parser/parser.nit:14625 */
+  fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
+  fra.me.REG[8] = fra.me.REG[6];
+  /* parser/parser.nit:14627 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14627);
+  }
+  /* parser/parser.nit:14629 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwdo, ID_parser___parser_nodes___TKwdo)) /*cast nullable TKwdo*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14629);
+  }
+  /* parser/parser.nit:14631 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14631);
+  }
+  /* parser/parser.nit:14632 */
+  fra.me.REG[3] = NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14640 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14641 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14641);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction429___action[] = "parser::ReduceAction429::(parser::ReduceAction::action)";
+void parser___ReduceAction429___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14646;
+  fra.me.meth = LOCATE_parser___ReduceAction429___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14648 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14649 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14650 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14651 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14652 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14654 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14654);
+  }
+  /* parser/parser.nit:14656 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14656);
+  }
+  /* parser/parser.nit:14658 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14658);
+  }
+  /* parser/parser.nit:14659 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14665 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14666 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14666);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction430___action[] = "parser::ReduceAction430::(parser::ReduceAction::action)";
+void parser___ReduceAction430___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14671;
+  fra.me.meth = LOCATE_parser___ReduceAction430___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14673 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14674 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14675 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14676 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14677 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14678 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14680 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14680);
+  }
+  /* parser/parser.nit:14682 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14682);
+  }
+  /* parser/parser.nit:14684 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14684);
+  }
+  /* parser/parser.nit:14686 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14686);
+  }
+  /* parser/parser.nit:14687 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14693 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14694 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14694);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction431___action[] = "parser::ReduceAction431::(parser::ReduceAction::action)";
+void parser___ReduceAction431___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14699;
+  fra.me.meth = LOCATE_parser___ReduceAction431___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14701 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14702 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14703 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14705 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14705);
+  }
+  /* parser/parser.nit:14707 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14707);
+  }
+  /* parser/parser.nit:14708 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14714 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14715 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14715);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction432___action[] = "parser::ReduceAction432::(parser::ReduceAction::action)";
+void parser___ReduceAction432___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14720;
+  fra.me.meth = LOCATE_parser___ReduceAction432___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14722 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14723 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14724 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14725 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14727 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwassert, ID_parser___parser_nodes___TKwassert)) /*cast nullable TKwassert*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14727);
+  }
+  /* parser/parser.nit:14729 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14729);
+  }
+  /* parser/parser.nit:14731 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14731);
+  }
+  /* parser/parser.nit:14732 */
+  fra.me.REG[3] = NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
+  /* parser/parser.nit:14738 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14739 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14739);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction433___action[] = "parser::ReduceAction433::(parser::ReduceAction::action)";
+void parser___ReduceAction433___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14744;
+  fra.me.meth = LOCATE_parser___ReduceAction433___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14746 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14747 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14748 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14750 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14751 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14751);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction437___action[] = "parser::ReduceAction437::(parser::ReduceAction::action)";
+void parser___ReduceAction437___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14756;
+  fra.me.meth = LOCATE_parser___ReduceAction437___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14758 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14759 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14760 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14761 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14762 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:14764 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14764);
+  }
+  /* parser/parser.nit:14766 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14766);
+  }
+  /* parser/parser.nit:14768 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14768);
+  }
+  /* parser/parser.nit:14769 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
+  fra.me.REG[6] = fra.me.REG[3];
+  /* parser/parser.nit:14770 */
+  fra.me.REG[6] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
+  /* parser/parser.nit:14775 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:14776 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14776);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction439___action[] = "parser::ReduceAction439::(parser::ReduceAction::action)";
+void parser___ReduceAction439___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14781;
+  fra.me.meth = LOCATE_parser___ReduceAction439___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14783 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14784 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14785 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14786 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14787 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14788 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14789 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14790 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14791 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14792 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14793 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14794 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14796 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___TKwif, ID_parser___parser_nodes___TKwif)) /*cast nullable TKwif*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14796);
+  }
+  /* parser/parser.nit:14798 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14798);
+  }
+  /* parser/parser.nit:14800 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwthen, ID_parser___parser_nodes___TKwthen)) /*cast nullable TKwthen*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14800);
+  }
+  /* parser/parser.nit:14802 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14802);
+  }
+  /* parser/parser.nit:14804 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwelse, ID_parser___parser_nodes___TKwelse)) /*cast nullable TKwelse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14804);
+  }
+  /* parser/parser.nit:14806 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14806);
+  }
+  /* parser/parser.nit:14807 */
+  fra.me.REG[3] = NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14815 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14816 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14816);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction441___action[] = "parser::ReduceAction441::(parser::ReduceAction::action)";
+void parser___ReduceAction441___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14821;
+  fra.me.meth = LOCATE_parser___ReduceAction441___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14823 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14824 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14825 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14826 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14827 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14829 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14829);
+  }
+  /* parser/parser.nit:14831 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14831);
+  }
+  /* parser/parser.nit:14832 */
+  fra.me.REG[3] = NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14836 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14837 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14837);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction442___action[] = "parser::ReduceAction442::(parser::ReduceAction::action)";
+void parser___ReduceAction442___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14842;
+  fra.me.meth = LOCATE_parser___ReduceAction442___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14844 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14845 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14846 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14847 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14848 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14850 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14850);
+  }
+  /* parser/parser.nit:14852 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14852);
+  }
+  /* parser/parser.nit:14853 */
+  fra.me.REG[3] = NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14857 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14858 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14858);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction443___action[] = "parser::ReduceAction443::(parser::ReduceAction::action)";
+void parser___ReduceAction443___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14863;
+  fra.me.meth = LOCATE_parser___ReduceAction443___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14865 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14866 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14867 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14868 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14869 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14870 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14872 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14872);
+  }
+  /* parser/parser.nit:14874 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14874);
+  }
+  /* parser/parser.nit:14875 */
+  fra.me.REG[3] = NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14879 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14880 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14880);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction445___action[] = "parser::ReduceAction445::(parser::ReduceAction::action)";
+void parser___ReduceAction445___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14885;
+  fra.me.meth = LOCATE_parser___ReduceAction445___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14887 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14888 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14889 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14890 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14892 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14892);
+  }
+  /* parser/parser.nit:14894 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14894);
+  }
+  /* parser/parser.nit:14895 */
+  fra.me.REG[3] = NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14899 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14900 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14900);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction447___action[] = "parser::ReduceAction447::(parser::ReduceAction::action)";
+void parser___ReduceAction447___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14905;
+  fra.me.meth = LOCATE_parser___ReduceAction447___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14907 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14908 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14909 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14910 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14911 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14913 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14913);
+  }
+  /* parser/parser.nit:14915 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14915);
+  }
+  /* parser/parser.nit:14916 */
+  fra.me.REG[3] = NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14920 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14921 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14921);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction448___action[] = "parser::ReduceAction448::(parser::ReduceAction::action)";
+void parser___ReduceAction448___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14926;
+  fra.me.meth = LOCATE_parser___ReduceAction448___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14928 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14929 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14930 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14931 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14932 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14934 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14934);
+  }
+  /* parser/parser.nit:14936 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14936);
+  }
+  /* parser/parser.nit:14937 */
+  fra.me.REG[3] = NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14941 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14942 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14942);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction449___action[] = "parser::ReduceAction449::(parser::ReduceAction::action)";
+void parser___ReduceAction449___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14947;
+  fra.me.meth = LOCATE_parser___ReduceAction449___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14949 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14950 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14951 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14952 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14953 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14955 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14955);
+  }
+  /* parser/parser.nit:14957 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14957);
+  }
+  /* parser/parser.nit:14958 */
+  fra.me.REG[3] = NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14962 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14963 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14963);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction450___action[] = "parser::ReduceAction450::(parser::ReduceAction::action)";
+void parser___ReduceAction450___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14968;
+  fra.me.meth = LOCATE_parser___ReduceAction450___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14970 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14971 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14972 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14973 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14974 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14976 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14976);
+  }
+  /* parser/parser.nit:14978 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14978);
+  }
+  /* parser/parser.nit:14979 */
+  fra.me.REG[3] = NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:14983 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:14984 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14984);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction451___action[] = "parser::ReduceAction451::(parser::ReduceAction::action)";
+void parser___ReduceAction451___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 14989;
+  fra.me.meth = LOCATE_parser___ReduceAction451___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:14991 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:14992 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14993 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14994 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14995 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:14997 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14997);
+  }
+  /* parser/parser.nit:14999 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 14999);
+  }
+  /* parser/parser.nit:15000 */
+  fra.me.REG[3] = NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15004 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15005 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15005);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction452___action[] = "parser::ReduceAction452::(parser::ReduceAction::action)";
+void parser___ReduceAction452___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15010;
+  fra.me.meth = LOCATE_parser___ReduceAction452___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15012 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15013 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15014 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15015 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15016 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15018 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15018);
+  }
+  /* parser/parser.nit:15020 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15020);
+  }
+  /* parser/parser.nit:15021 */
+  fra.me.REG[3] = NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15025 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15026 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15026);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction453___action[] = "parser::ReduceAction453::(parser::ReduceAction::action)";
+void parser___ReduceAction453___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15031;
+  fra.me.meth = LOCATE_parser___ReduceAction453___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15033 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15034 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15035 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15036 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15037 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15039 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15039);
+  }
+  /* parser/parser.nit:15041 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15041);
+  }
+  /* parser/parser.nit:15042 */
+  fra.me.REG[3] = NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15046 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15047 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15047);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction454___action[] = "parser::ReduceAction454::(parser::ReduceAction::action)";
+void parser___ReduceAction454___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15052;
+  fra.me.meth = LOCATE_parser___ReduceAction454___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15054 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15055 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15056 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15057 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15058 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15060 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15060);
+  }
+  /* parser/parser.nit:15062 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15062);
+  }
+  /* parser/parser.nit:15063 */
+  fra.me.REG[3] = NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15067 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15068 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15068);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction455___action[] = "parser::ReduceAction455::(parser::ReduceAction::action)";
+void parser___ReduceAction455___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15073;
+  fra.me.meth = LOCATE_parser___ReduceAction455___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15075 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15076 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15077 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15078 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15079 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15081 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15081);
+  }
+  /* parser/parser.nit:15083 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15083);
+  }
+  /* parser/parser.nit:15084 */
+  fra.me.REG[3] = NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15088 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15089 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15089);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction456___action[] = "parser::ReduceAction456::(parser::ReduceAction::action)";
+void parser___ReduceAction456___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15094;
+  fra.me.meth = LOCATE_parser___ReduceAction456___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15096 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15097 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15098 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15099 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15100 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15102 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15102);
+  }
+  /* parser/parser.nit:15104 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15104);
+  }
+  /* parser/parser.nit:15105 */
+  fra.me.REG[3] = NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15109 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15110 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15110);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction457___action[] = "parser::ReduceAction457::(parser::ReduceAction::action)";
+void parser___ReduceAction457___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15115;
+  fra.me.meth = LOCATE_parser___ReduceAction457___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15117 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15118 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15119 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15120 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15121 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15123 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15123);
+  }
+  /* parser/parser.nit:15125 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15125);
+  }
+  /* parser/parser.nit:15126 */
+  fra.me.REG[3] = NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15130 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15131 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15131);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction459___action[] = "parser::ReduceAction459::(parser::ReduceAction::action)";
+void parser___ReduceAction459___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15136;
+  fra.me.meth = LOCATE_parser___ReduceAction459___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15138 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15139 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15140 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15141 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15142 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15144 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15144);
+  }
+  /* parser/parser.nit:15146 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15146);
+  }
+  /* parser/parser.nit:15147 */
+  fra.me.REG[3] = NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15151 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15152 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15152);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction460___action[] = "parser::ReduceAction460::(parser::ReduceAction::action)";
+void parser___ReduceAction460___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15157;
+  fra.me.meth = LOCATE_parser___ReduceAction460___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15159 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15160 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15162 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15163 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15165 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15165);
+  }
+  /* parser/parser.nit:15167 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15167);
+  }
+  /* parser/parser.nit:15168 */
+  fra.me.REG[3] = NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15172 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15173 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15173);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction462___action[] = "parser::ReduceAction462::(parser::ReduceAction::action)";
+void parser___ReduceAction462___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15178;
+  fra.me.meth = LOCATE_parser___ReduceAction462___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15180 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15181 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15182 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15183 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15184 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15186 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15186);
+  }
+  /* parser/parser.nit:15188 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15188);
+  }
+  /* parser/parser.nit:15189 */
+  fra.me.REG[3] = NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15193 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15194 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15194);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction463___action[] = "parser::ReduceAction463::(parser::ReduceAction::action)";
+void parser___ReduceAction463___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15199;
+  fra.me.meth = LOCATE_parser___ReduceAction463___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15201 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15202 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15203 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15204 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15205 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15207 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15207);
+  }
+  /* parser/parser.nit:15209 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15209);
+  }
+  /* parser/parser.nit:15210 */
+  fra.me.REG[3] = NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15214 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15215 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15215);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction464___action[] = "parser::ReduceAction464::(parser::ReduceAction::action)";
+void parser___ReduceAction464___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15220;
+  fra.me.meth = LOCATE_parser___ReduceAction464___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15222 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15223 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15224 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15225 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15226 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15228 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15228);
+  }
+  /* parser/parser.nit:15230 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15230);
+  }
+  /* parser/parser.nit:15231 */
+  fra.me.REG[3] = NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15235 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15236 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15236);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction466___action[] = "parser::ReduceAction466::(parser::ReduceAction::action)";
+void parser___ReduceAction466___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15241;
+  fra.me.meth = LOCATE_parser___ReduceAction466___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15243 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15244 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15245 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15246 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15248 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TMinus, ID_parser___parser_nodes___TMinus)) /*cast nullable TMinus*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15248);
+  }
+  /* parser/parser.nit:15250 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15250);
+  }
+  /* parser/parser.nit:15251 */
+  fra.me.REG[3] = NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15255 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15256 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15256);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction467___action[] = "parser::ReduceAction467::(parser::ReduceAction::action)";
+void parser___ReduceAction467___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15261;
+  fra.me.meth = LOCATE_parser___ReduceAction467___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15263 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15264 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15265 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15266 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15268 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwonce, ID_parser___parser_nodes___TKwonce)) /*cast nullable TKwonce*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15268);
+  }
+  /* parser/parser.nit:15270 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15270);
+  }
+  /* parser/parser.nit:15271 */
+  fra.me.REG[3] = NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15275 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15276 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15276);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction469___action[] = "parser::ReduceAction469::(parser::ReduceAction::action)";
+void parser___ReduceAction469___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15281;
+  fra.me.meth = LOCATE_parser___ReduceAction469___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15283 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15284 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15285 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15286 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15287 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15289 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15289);
+  }
+  /* parser/parser.nit:15291 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15291);
+  }
+  /* parser/parser.nit:15293 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15293);
+  }
+  /* parser/parser.nit:15294 */
+  fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
+  /* parser/parser.nit:15300 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15301 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15301);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction470___action[] = "parser::ReduceAction470::(parser::ReduceAction::action)";
+void parser___ReduceAction470___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15306;
+  fra.me.meth = LOCATE_parser___ReduceAction470___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15308 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15309 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15310 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15311 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15312 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15313 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15315 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15315);
+  }
+  /* parser/parser.nit:15317 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15317);
+  }
+  /* parser/parser.nit:15319 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15319);
+  }
+  /* parser/parser.nit:15320 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15325 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15326 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15326);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction471___action[] = "parser::ReduceAction471::(parser::ReduceAction::action)";
+void parser___ReduceAction471___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15331;
+  fra.me.meth = LOCATE_parser___ReduceAction471___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15333 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15334 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15335 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15337 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15337);
+  }
+  /* parser/parser.nit:15338 */
+  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:15340 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15340);
+  }
+  /* parser/parser.nit:15341 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:15346 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15347 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15347);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction472___action[] = "parser::ReduceAction472::(parser::ReduceAction::action)";
+void parser___ReduceAction472___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15352;
+  fra.me.meth = LOCATE_parser___ReduceAction472___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15354 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15355 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15356 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15357 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15358 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15360 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15360);
+  }
+  /* parser/parser.nit:15362 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15362);
+  }
+  /* parser/parser.nit:15363 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15367 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15368 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15368);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction473___action[] = "parser::ReduceAction473::(parser::ReduceAction::action)";
+void parser___ReduceAction473___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15373;
+  fra.me.meth = LOCATE_parser___ReduceAction473___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15375 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15376 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15377 */
+  fra.me.REG[4] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:15379 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15379);
+  }
+  /* parser/parser.nit:15380 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15384 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15385 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15385);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction480___action[] = "parser::ReduceAction480::(parser::ReduceAction::action)";
+void parser___ReduceAction480___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15390;
+  fra.me.meth = LOCATE_parser___ReduceAction480___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15392 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15393 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15394 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15395 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15397 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15397);
+  }
+  /* parser/parser.nit:15399 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15399);
+  }
+  /* parser/parser.nit:15400 */
+  fra.me.REG[5] = NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
+  /* parser/parser.nit:15405 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15406 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15406);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction481___action[] = "parser::ReduceAction481::(parser::ReduceAction::action)";
+void parser___ReduceAction481___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15411;
+  fra.me.meth = LOCATE_parser___ReduceAction481___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15413 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15414 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15415 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15416 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15417 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15418 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15419 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15420 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15422 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwnew, ID_parser___parser_nodes___TKwnew)) /*cast nullable TKwnew*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15422);
+  }
+  /* parser/parser.nit:15424 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15424);
+  }
+  /* parser/parser.nit:15426 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15426);
+  }
+  /* parser/parser.nit:15428 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15428);
+  }
+  /* parser/parser.nit:15429 */
+  fra.me.REG[3] = NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15435 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15436 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15436);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction482___action[] = "parser::ReduceAction482::(parser::ReduceAction::action)";
+void parser___ReduceAction482___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15441;
+  fra.me.meth = LOCATE_parser___ReduceAction482___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15443 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15444 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15445 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15446 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15447 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15448 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15449 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15450 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15451 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15452 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15454 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15454);
+  }
+  /* parser/parser.nit:15456 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15456);
+  }
+  /* parser/parser.nit:15458 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15458);
+  }
+  /* parser/parser.nit:15460 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15460);
+  }
+  /* parser/parser.nit:15461 */
+  fra.me.REG[3] = NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15467 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15468 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15468);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction483___action[] = "parser::ReduceAction483::(parser::ReduceAction::action)";
+void parser___ReduceAction483___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15473;
+  fra.me.meth = LOCATE_parser___ReduceAction483___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15475 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15476 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15477 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15478 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15479 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15480 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15481 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15482 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15483 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15484 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15486 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15486);
+  }
+  /* parser/parser.nit:15488 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15488);
+  }
+  /* parser/parser.nit:15490 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15490);
+  }
+  /* parser/parser.nit:15492 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15492);
+  }
+  /* parser/parser.nit:15493 */
+  fra.me.REG[3] = NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15499 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15500 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15500);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction484___action[] = "parser::ReduceAction484::(parser::ReduceAction::action)";
+void parser___ReduceAction484___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15505;
+  fra.me.meth = LOCATE_parser___ReduceAction484___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15507 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15508 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15510 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15510);
+  }
+  /* parser/parser.nit:15511 */
+  fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15514 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15515 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15515);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction485___action[] = "parser::ReduceAction485::(parser::ReduceAction::action)";
+void parser___ReduceAction485___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15520;
+  fra.me.meth = LOCATE_parser___ReduceAction485___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15525 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwself, ID_parser___parser_nodes___TKwself)) /*cast nullable TKwself*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15525);
+  }
+  /* parser/parser.nit:15526 */
+  fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15529 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15530 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15530);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction486___action[] = "parser::ReduceAction486::(parser::ReduceAction::action)";
+void parser___ReduceAction486___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15535;
+  fra.me.meth = LOCATE_parser___ReduceAction486___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15537 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15538 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15540 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwtrue, ID_parser___parser_nodes___TKwtrue)) /*cast nullable TKwtrue*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15540);
+  }
+  /* parser/parser.nit:15541 */
+  fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15544 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15545 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15545);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction487___action[] = "parser::ReduceAction487::(parser::ReduceAction::action)";
+void parser___ReduceAction487___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15550;
+  fra.me.meth = LOCATE_parser___ReduceAction487___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15552 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15553 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15555 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwfalse, ID_parser___parser_nodes___TKwfalse)) /*cast nullable TKwfalse*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15555);
+  }
+  /* parser/parser.nit:15556 */
+  fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15559 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15560 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15560);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction488___action[] = "parser::ReduceAction488::(parser::ReduceAction::action)";
+void parser___ReduceAction488___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15565;
+  fra.me.meth = LOCATE_parser___ReduceAction488___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15567 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15568 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15570 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15570);
+  }
+  /* parser/parser.nit:15571 */
+  fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15574 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15575 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15575);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction489___action[] = "parser::ReduceAction489::(parser::ReduceAction::action)";
+void parser___ReduceAction489___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15580;
+  fra.me.meth = LOCATE_parser___ReduceAction489___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15582 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15583 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15585 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TNumber, ID_parser___parser_nodes___TNumber)) /*cast nullable TNumber*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15585);
+  }
+  /* parser/parser.nit:15586 */
+  fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15589 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15590 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15590);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction490___action[] = "parser::ReduceAction490::(parser::ReduceAction::action)";
+void parser___ReduceAction490___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15595;
+  fra.me.meth = LOCATE_parser___ReduceAction490___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15597 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15598 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15600 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TFloat, ID_parser___parser_nodes___TFloat)) /*cast nullable TFloat*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15600);
+  }
+  /* parser/parser.nit:15601 */
+  fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15604 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15605 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15605);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction491___action[] = "parser::ReduceAction491::(parser::ReduceAction::action)";
+void parser___ReduceAction491___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15610;
+  fra.me.meth = LOCATE_parser___ReduceAction491___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15612 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15613 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15615 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TChar, ID_parser___parser_nodes___TChar)) /*cast nullable TChar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15615);
+  }
+  /* parser/parser.nit:15616 */
+  fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15619 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15620 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15620);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction492___action[] = "parser::ReduceAction492::(parser::ReduceAction::action)";
+void parser___ReduceAction492___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15625;
+  fra.me.meth = LOCATE_parser___ReduceAction492___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15627 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15628 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15630 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TString, ID_parser___parser_nodes___TString)) /*cast nullable TString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15630);
+  }
+  /* parser/parser.nit:15631 */
+  fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15634 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15635 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15635);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction494___action[] = "parser::ReduceAction494::(parser::ReduceAction::action)";
+void parser___ReduceAction494___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15640;
+  fra.me.meth = LOCATE_parser___ReduceAction494___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15642 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15643 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15644 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15645 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15647 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15647);
+  }
+  /* parser/parser.nit:15649 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15649);
+  }
+  /* parser/parser.nit:15651 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15651);
+  }
+  /* parser/parser.nit:15652 */
+  fra.me.REG[3] = NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15657 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15658 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15658);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction495___action[] = "parser::ReduceAction495::(parser::ReduceAction::action)";
+void parser___ReduceAction495___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15663;
+  fra.me.meth = LOCATE_parser___ReduceAction495___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15665 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15666 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15667 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15668 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15669 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15670 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15671 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15672 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15673 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15674 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15675 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15677 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15677);
+  }
+  /* parser/parser.nit:15679 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15679);
+  }
+  /* parser/parser.nit:15681 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15681);
+  }
+  /* parser/parser.nit:15683 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast nullable AType*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15683);
+  }
+  /* parser/parser.nit:15685 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15685);
+  }
+  /* parser/parser.nit:15686 */
+  fra.me.REG[3] = NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15693 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15694 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15694);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction496___action[] = "parser::ReduceAction496::(parser::ReduceAction::action)";
+void parser___ReduceAction496___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15699;
+  fra.me.meth = LOCATE_parser___ReduceAction496___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15701 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15702 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15703 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15704 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15705 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15706 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15707 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15708 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15709 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15710 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15711 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15712 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15713 */
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15715 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15715);
+  }
+  /* parser/parser.nit:15717 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___TKwas, ID_parser___parser_nodes___TKwas)) /*cast nullable TKwas*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15717);
+  }
+  /* parser/parser.nit:15719 */
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15719);
+  }
+  /* parser/parser.nit:15721 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwnot, ID_parser___parser_nodes___TKwnot)) /*cast nullable TKwnot*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15721);
+  }
+  /* parser/parser.nit:15723 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwnull, ID_parser___parser_nodes___TKwnull)) /*cast nullable TKwnull*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15723);
+  }
+  /* parser/parser.nit:15725 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15725);
+  }
+  /* parser/parser.nit:15726 */
+  fra.me.REG[3] = NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:15734 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15735 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15735);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction497___action[] = "parser::ReduceAction497::(parser::ReduceAction::action)";
+void parser___ReduceAction497___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15740;
+  fra.me.meth = LOCATE_parser___ReduceAction497___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15742 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15743 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15744 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15745 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15747 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15747);
+  }
+  /* parser/parser.nit:15749 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15749);
+  }
+  /* parser/parser.nit:15750 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:15751 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15752 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15754 */
+  fra.me.REG[5] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5]);
+  /* parser/parser.nit:15757 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15758 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15758);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction498___action[] = "parser::ReduceAction498::(parser::ReduceAction::action)";
+void parser___ReduceAction498___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15763;
+  fra.me.meth = LOCATE_parser___ReduceAction498___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15765 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15766 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15767 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15768 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15769 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15771 */
+  REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15771);
+  }
+  /* parser/parser.nit:15773 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15773);
+  }
+  /* parser/parser.nit:15775 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15775);
+  }
+  /* parser/parser.nit:15776 */
+  fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = fra.me.REG[5];
+  /* parser/parser.nit:15777 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:15778 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15779 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15781 */
+  fra.me.REG[6] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6]);
+  /* parser/parser.nit:15784 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:15785 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15785);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction499___action[] = "parser::ReduceAction499::(parser::ReduceAction::action)";
+void parser___ReduceAction499___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15790;
+  fra.me.meth = LOCATE_parser___ReduceAction499___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15792 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15793 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15794 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15795 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15796 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15797 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15800 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15801 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:15803 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15804 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15806 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15807 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15807);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction500___action[] = "parser::ReduceAction500::(parser::ReduceAction::action)";
+void parser___ReduceAction500___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15812;
+  fra.me.meth = LOCATE_parser___ReduceAction500___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15814 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15815 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15817 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TStartString, ID_parser___parser_nodes___TStartString)) /*cast nullable TStartString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15817);
+  }
+  /* parser/parser.nit:15818 */
+  fra.me.REG[3] = NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15821 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15822 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15822);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction502___action[] = "parser::ReduceAction502::(parser::ReduceAction::action)";
+void parser___ReduceAction502___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15827;
+  fra.me.meth = LOCATE_parser___ReduceAction502___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15829 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15830 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15832 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TMidString, ID_parser___parser_nodes___TMidString)) /*cast nullable TMidString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15832);
+  }
+  /* parser/parser.nit:15833 */
+  fra.me.REG[3] = NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15836 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15837 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15837);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction503___action[] = "parser::ReduceAction503::(parser::ReduceAction::action)";
+void parser___ReduceAction503___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15842;
+  fra.me.meth = LOCATE_parser___ReduceAction503___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15844 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15845 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15847 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TEndString, ID_parser___parser_nodes___TEndString)) /*cast nullable TEndString*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15847);
+  }
+  /* parser/parser.nit:15848 */
+  fra.me.REG[3] = NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
+  /* parser/parser.nit:15851 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15852 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15852);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction504___action[] = "parser::ReduceAction504::(parser::ReduceAction::action)";
+void parser___ReduceAction504___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15857;
+  fra.me.meth = LOCATE_parser___ReduceAction504___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15859 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15860 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15861 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15862 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15863 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15864 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15866 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15866);
+  }
+  /* parser/parser.nit:15868 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15868);
+  }
+  /* parser/parser.nit:15869 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:15871 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15871);
+  }
+  /* parser/parser.nit:15872 */
+  fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:15877 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15878 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15878);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction505___action[] = "parser::ReduceAction505::(parser::ReduceAction::action)";
+void parser___ReduceAction505___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15883;
+  fra.me.meth = LOCATE_parser___ReduceAction505___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15885 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15886 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15887 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15888 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15889 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15891 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TOpar, ID_parser___parser_nodes___TOpar)) /*cast nullable TOpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15891);
+  }
+  /* parser/parser.nit:15893 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCpar, ID_parser___parser_nodes___TCpar)) /*cast nullable TCpar*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15893);
+  }
+  /* parser/parser.nit:15894 */
+  fra.me.REG[3] = NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:15899 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15900 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15900);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction506___action[] = "parser::ReduceAction506::(parser::ReduceAction::action)";
+void parser___ReduceAction506___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15905;
+  fra.me.meth = LOCATE_parser___ReduceAction506___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15907 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15908 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15909 */
+  fra.me.REG[3] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[3]);
+  /* parser/parser.nit:15912 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15913 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15913);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction508___action[] = "parser::ReduceAction508::(parser::ReduceAction::action)";
+void parser___ReduceAction508___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15918;
+  fra.me.meth = LOCATE_parser___ReduceAction508___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15920 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15921 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15922 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15924 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15924);
+  }
+  /* parser/parser.nit:15925 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15926 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15928 */
+  fra.me.REG[4] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[4]);
+  /* parser/parser.nit:15931 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15932 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15932);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction511___action[] = "parser::ReduceAction511::(parser::ReduceAction::action)";
+void parser___ReduceAction511___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15937;
+  fra.me.meth = LOCATE_parser___ReduceAction511___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15939 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15940 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15941 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15942 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15943 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15944 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15946 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TObra, ID_parser___parser_nodes___TObra)) /*cast nullable TObra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15946);
+  }
+  /* parser/parser.nit:15948 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15948);
+  }
+  /* parser/parser.nit:15949 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:15951 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TCbra, ID_parser___parser_nodes___TCbra)) /*cast nullable TCbra*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15951);
+  }
+  /* parser/parser.nit:15952 */
+  fra.me.REG[3] = NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:15957 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:15958 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15958);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction512___action[] = "parser::ReduceAction512::(parser::ReduceAction::action)";
+void parser___ReduceAction512___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15963;
+  fra.me.meth = LOCATE_parser___ReduceAction512___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15965 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15966 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15967 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15968 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15970 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15971 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:15973 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:15974 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15974);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction513___action[] = "parser::ReduceAction513::(parser::ReduceAction::action)";
+void parser___ReduceAction513___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15979;
+  fra.me.meth = LOCATE_parser___ReduceAction513___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:15981 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:15982 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15983 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15984 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:15985 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:15988 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 15988);
+  }
+  /* parser/parser.nit:15989 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:15990 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  }
+  /* parser/parser.nit:15992 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:15993 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:15994 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15994);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction514___action[] = "parser::ReduceAction514::(parser::ReduceAction::action)";
+void parser___ReduceAction514___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 15999;
+  fra.me.meth = LOCATE_parser___ReduceAction514___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16001 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16002 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16003 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16004 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16005 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16007 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16008 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16008);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction515___action[] = "parser::ReduceAction515::(parser::ReduceAction::action)";
+void parser___ReduceAction515___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16013;
+  fra.me.meth = LOCATE_parser___ReduceAction515___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16015 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16016 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16017 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16019 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16020 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16022 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16023 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16023);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction516___action[] = "parser::ReduceAction516::(parser::ReduceAction::action)";
+void parser___ReduceAction516___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16028;
+  fra.me.meth = LOCATE_parser___ReduceAction516___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16030 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16031 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16032 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16033 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16034 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16035 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16036 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16038 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16038);
+  }
+  /* parser/parser.nit:16040 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16041 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16042 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16044 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16045 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16045);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction517___action[] = "parser::ReduceAction517::(parser::ReduceAction::action)";
+void parser___ReduceAction517___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16050;
+  fra.me.meth = LOCATE_parser___ReduceAction517___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16052 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16053 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16054 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16056 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16056);
+  }
+  /* parser/parser.nit:16057 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16062 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16063 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16063);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction518___action[] = "parser::ReduceAction518::(parser::ReduceAction::action)";
+void parser___ReduceAction518___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16068;
+  fra.me.meth = LOCATE_parser___ReduceAction518___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16070 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16071 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16072 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16073 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16075 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16075);
+  }
+  /* parser/parser.nit:16076 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16078 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16078);
+  }
+  /* parser/parser.nit:16079 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(NIT_NULL, fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:16084 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16085 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16085);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction519___action[] = "parser::ReduceAction519::(parser::ReduceAction::action)";
+void parser___ReduceAction519___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16090;
+  fra.me.meth = LOCATE_parser___ReduceAction519___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16092 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16093 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16094 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16095 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16096 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16098 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16098);
+  }
+  /* parser/parser.nit:16100 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16100);
+  }
+  /* parser/parser.nit:16101 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:16106 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16107 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16107);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction520___action[] = "parser::ReduceAction520::(parser::ReduceAction::action)";
+void parser___ReduceAction520___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16112;
+  fra.me.meth = LOCATE_parser___ReduceAction520___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16114 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16115 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16116 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16117 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16118 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16119 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16121 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TQuad, ID_parser___parser_nodes___TQuad)) /*cast nullable TQuad*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16121);
+  }
+  /* parser/parser.nit:16123 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16123);
+  }
+  /* parser/parser.nit:16124 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = fra.me.REG[4];
+  /* parser/parser.nit:16126 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16126);
+  }
+  /* parser/parser.nit:16127 */
+  fra.me.REG[3] = NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[5], fra.me.REG[6], fra.me.REG[3]);
+  /* parser/parser.nit:16132 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16133 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16133);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction521___action[] = "parser::ReduceAction521::(parser::ReduceAction::action)";
+void parser___ReduceAction521___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16138;
+  fra.me.meth = LOCATE_parser___ReduceAction521___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16140 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16141 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16142 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16144 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16144);
+  }
+  /* parser/parser.nit:16145 */
+  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16149 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16150 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16150);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction522___action[] = "parser::ReduceAction522::(parser::ReduceAction::action)";
+void parser___ReduceAction522___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16155;
+  fra.me.meth = LOCATE_parser___ReduceAction522___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16157 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16158 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16159 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16160 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16162 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16162);
+  }
+  /* parser/parser.nit:16163 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16165 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast nullable TClassid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16165);
+  }
+  /* parser/parser.nit:16166 */
+  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
+  /* parser/parser.nit:16170 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16171 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16171);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction523___action[] = "parser::ReduceAction523::(parser::ReduceAction::action)";
+void parser___ReduceAction523___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16176;
+  fra.me.meth = LOCATE_parser___ReduceAction523___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16178 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16179 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16180 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16182 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16182);
+  }
+  /* parser/parser.nit:16183 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:16184 */
+  fra.me.REG[4] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
+  /* parser/parser.nit:16188 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16189 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16189);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction524___action[] = "parser::ReduceAction524::(parser::ReduceAction::action)";
+void parser___ReduceAction524___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16194;
+  fra.me.meth = LOCATE_parser___ReduceAction524___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16196 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16197 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16198 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16199 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16201 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16202 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16202);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction525___action[] = "parser::ReduceAction525::(parser::ReduceAction::action)";
+void parser___ReduceAction525___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16207;
+  fra.me.meth = LOCATE_parser___ReduceAction525___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16209 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16210 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16211 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16212 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16214 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16215 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16215);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction526___action[] = "parser::ReduceAction526::(parser::ReduceAction::action)";
+void parser___ReduceAction526___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16220;
+  fra.me.meth = LOCATE_parser___ReduceAction526___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16222 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16223 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16224 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16224);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction528___action[] = "parser::ReduceAction528::(parser::ReduceAction::action)";
+void parser___ReduceAction528___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16229;
+  fra.me.meth = LOCATE_parser___ReduceAction528___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16231 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16232 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16233 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16235 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16235);
+  }
+  /* parser/parser.nit:16236 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:16237 */
+  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* parser/parser.nit:16240 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16241 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16241);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction529___action[] = "parser::ReduceAction529::(parser::ReduceAction::action)";
+void parser___ReduceAction529___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16246;
+  fra.me.meth = LOCATE_parser___ReduceAction529___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16248 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16249 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16250 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16251 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16253 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16253);
+  }
+  /* parser/parser.nit:16254 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[4] = fra.me.REG[3];
+  /* parser/parser.nit:16255 */
+  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
+  /* parser/parser.nit:16258 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16259 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16259);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction531___action[] = "parser::ReduceAction531::(parser::ReduceAction::action)";
+void parser___ReduceAction531___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16264;
+  fra.me.meth = LOCATE_parser___ReduceAction531___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16266 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16267 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16268 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16268);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction532___action[] = "parser::ReduceAction532::(parser::ReduceAction::action)";
+void parser___ReduceAction532___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16273;
+  fra.me.meth = LOCATE_parser___ReduceAction532___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16275 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16276 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16278 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16279 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16279);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction533___action[] = "parser::ReduceAction533::(parser::ReduceAction::action)";
+void parser___ReduceAction533___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16284;
+  fra.me.meth = LOCATE_parser___ReduceAction533___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16286 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16287 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16288 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16289 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16289);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction534___action[] = "parser::ReduceAction534::(parser::ReduceAction::action)";
+void parser___ReduceAction534___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16294;
+  fra.me.meth = LOCATE_parser___ReduceAction534___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16296 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16297 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16298 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16299 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16300 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16300);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction806___action[] = "parser::ReduceAction806::(parser::ReduceAction::action)";
+void parser___ReduceAction806___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16305;
+  fra.me.meth = LOCATE_parser___ReduceAction806___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16307 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16308 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16309 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16310 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16312 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___TKwisset, ID_parser___parser_nodes___TKwisset)) /*cast nullable TKwisset*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16312);
+  }
+  /* parser/parser.nit:16314 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16314);
+  }
+  /* parser/parser.nit:16316 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16316);
+  }
+  /* parser/parser.nit:16317 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16322 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16323 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16323);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction807___action[] = "parser::ReduceAction807::(parser::ReduceAction::action)";
+void parser___ReduceAction807___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16328;
+  fra.me.meth = LOCATE_parser___ReduceAction807___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16330 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16331 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16332 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16334 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16334);
+  }
+  /* parser/parser.nit:16336 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TAttrid, ID_parser___parser_nodes___TAttrid)) /*cast nullable TAttrid*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16336);
+  }
+  /* parser/parser.nit:16337 */
+  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16341 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16342 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16342);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction808___action[] = "parser::ReduceAction808::(parser::ReduceAction::action)";
+void parser___ReduceAction808___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16347;
+  fra.me.meth = LOCATE_parser___ReduceAction808___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16349 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16350 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16351 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16352 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16353 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16355 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16355);
+  }
+  /* parser/parser.nit:16357 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TId, ID_parser___parser_nodes___TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16357);
+  }
+  /* parser/parser.nit:16359 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16359);
+  }
+  /* parser/parser.nit:16360 */
+  fra.me.REG[6] = NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[6]);
+  /* parser/parser.nit:16366 */
+  fra.me.REG[2] = fra.me.REG[6];
+  /* parser/parser.nit:16367 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16367);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction811___action[] = "parser::ReduceAction811::(parser::ReduceAction::action)";
+void parser___ReduceAction811___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16372;
+  fra.me.meth = LOCATE_parser___ReduceAction811___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16374 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16375 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16376 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16377 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16379 */
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16379);
+  }
+  /* parser/parser.nit:16381 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___TKwinit, ID_parser___parser_nodes___TKwinit)) /*cast nullable TKwinit*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16381);
+  }
+  /* parser/parser.nit:16383 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AExprs, ID_parser___parser_nodes___AExprs)) /*cast nullable AExprs*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16383);
+  }
+  /* parser/parser.nit:16384 */
+  fra.me.REG[3] = NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+  /* parser/parser.nit:16389 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16390 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16390);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction824___action[] = "parser::ReduceAction824::(parser::ReduceAction::action)";
+void parser___ReduceAction824___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16395;
+  fra.me.meth = LOCATE_parser___ReduceAction824___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16397 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16398 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16399 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16400 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16402 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16403 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16403);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction825___action[] = "parser::ReduceAction825::(parser::ReduceAction::action)";
+void parser___ReduceAction825___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16408;
+  fra.me.meth = LOCATE_parser___ReduceAction825___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16410 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16411 */
+  fra.me.REG[3] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
+  /* parser/parser.nit:16412 */
+  fra.me.REG[2] = fra.me.REG[3];
+  /* parser/parser.nit:16413 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16413);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction832___action[] = "parser::ReduceAction832::(parser::ReduceAction::action)";
+void parser___ReduceAction832___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16418;
+  fra.me.meth = LOCATE_parser___ReduceAction832___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16420 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16421 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16422 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16424 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16425 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16427 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16428 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16428);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction833___action[] = "parser::ReduceAction833::(parser::ReduceAction::action)";
+void parser___ReduceAction833___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16433;
+  fra.me.meth = LOCATE_parser___ReduceAction833___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16435 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16436 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16437 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16438 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16440 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16440);
+  }
+  /* parser/parser.nit:16442 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16443 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16444 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16446 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16447 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16447);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction834___action[] = "parser::ReduceAction834::(parser::ReduceAction::action)";
+void parser___ReduceAction834___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16452;
+  fra.me.meth = LOCATE_parser___ReduceAction834___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16454 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16455 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16456 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16458 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16459 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16461 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16462 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16462);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction835___action[] = "parser::ReduceAction835::(parser::ReduceAction::action)";
+void parser___ReduceAction835___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16467;
+  fra.me.meth = LOCATE_parser___ReduceAction835___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16469 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16470 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16471 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16472 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16474 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16474);
+  }
+  /* parser/parser.nit:16476 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16477 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16478 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16480 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16481 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16481);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction836___action[] = "parser::ReduceAction836::(parser::ReduceAction::action)";
+void parser___ReduceAction836___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16486;
+  fra.me.meth = LOCATE_parser___ReduceAction836___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16488 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16489 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16490 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16492 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16493 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16495 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16496 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16496);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction837___action[] = "parser::ReduceAction837::(parser::ReduceAction::action)";
+void parser___ReduceAction837___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16501;
+  fra.me.meth = LOCATE_parser___ReduceAction837___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16503 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16504 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16505 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16506 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16508 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16508);
+  }
+  /* parser/parser.nit:16510 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16511 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16512 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16514 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16515 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16515);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction838___action[] = "parser::ReduceAction838::(parser::ReduceAction::action)";
+void parser___ReduceAction838___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16520;
+  fra.me.meth = LOCATE_parser___ReduceAction838___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16522 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16523 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16524 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16526 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16527 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16529 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16530 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16530);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction839___action[] = "parser::ReduceAction839::(parser::ReduceAction::action)";
+void parser___ReduceAction839___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16535;
+  fra.me.meth = LOCATE_parser___ReduceAction839___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16537 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16538 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16539 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16540 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16542 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16542);
+  }
+  /* parser/parser.nit:16544 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16545 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16546 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16548 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16549 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16549);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction840___action[] = "parser::ReduceAction840::(parser::ReduceAction::action)";
+void parser___ReduceAction840___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16554;
+  fra.me.meth = LOCATE_parser___ReduceAction840___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16556 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16557 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16558 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16560 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16561 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16563 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16564 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16564);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction841___action[] = "parser::ReduceAction841::(parser::ReduceAction::action)";
+void parser___ReduceAction841___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16569;
+  fra.me.meth = LOCATE_parser___ReduceAction841___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16571 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16572 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16573 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16574 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16576 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16576);
+  }
+  /* parser/parser.nit:16578 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16579 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16580 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16582 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16583 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16583);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction844___action[] = "parser::ReduceAction844::(parser::ReduceAction::action)";
+void parser___ReduceAction844___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16588;
+  fra.me.meth = LOCATE_parser___ReduceAction844___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16590 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16591 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16592 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16594 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16595 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16597 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16598 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16598);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction845___action[] = "parser::ReduceAction845::(parser::ReduceAction::action)";
+void parser___ReduceAction845___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16603;
+  fra.me.meth = LOCATE_parser___ReduceAction845___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16605 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16606 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16607 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16608 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16610 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16610);
+  }
+  /* parser/parser.nit:16612 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16613 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16614 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16616 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16617 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16617);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction846___action[] = "parser::ReduceAction846::(parser::ReduceAction::action)";
+void parser___ReduceAction846___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16622;
+  fra.me.meth = LOCATE_parser___ReduceAction846___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16624 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16625 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16626 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16628 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16629 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16631 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16632 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16632);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction847___action[] = "parser::ReduceAction847::(parser::ReduceAction::action)";
+void parser___ReduceAction847___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16637;
+  fra.me.meth = LOCATE_parser___ReduceAction847___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16639 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16640 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16641 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16642 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16644 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16644);
+  }
+  /* parser/parser.nit:16646 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16647 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16648 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16650 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16651 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16651);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction848___action[] = "parser::ReduceAction848::(parser::ReduceAction::action)";
+void parser___ReduceAction848___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16656;
+  fra.me.meth = LOCATE_parser___ReduceAction848___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16658 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16659 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16660 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16662 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16663 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16665 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16666 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16666);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction849___action[] = "parser::ReduceAction849::(parser::ReduceAction::action)";
+void parser___ReduceAction849___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16671;
+  fra.me.meth = LOCATE_parser___ReduceAction849___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16673 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16674 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16675 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16676 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16678 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16678);
+  }
+  /* parser/parser.nit:16680 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16681 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16682 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16684 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16685 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16685);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction850___action[] = "parser::ReduceAction850::(parser::ReduceAction::action)";
+void parser___ReduceAction850___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16690;
+  fra.me.meth = LOCATE_parser___ReduceAction850___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16692 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16693 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16694 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16696 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16697 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16699 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16700 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16700);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction851___action[] = "parser::ReduceAction851::(parser::ReduceAction::action)";
+void parser___ReduceAction851___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16705;
+  fra.me.meth = LOCATE_parser___ReduceAction851___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16707 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16708 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16709 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16710 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16712 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16712);
+  }
+  /* parser/parser.nit:16714 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16715 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16716 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16718 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16719 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16719);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction853___action[] = "parser::ReduceAction853::(parser::ReduceAction::action)";
+void parser___ReduceAction853___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16724;
+  fra.me.meth = LOCATE_parser___ReduceAction853___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16726 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16727 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16728 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16729 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16731 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16731);
+  }
+  /* parser/parser.nit:16733 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16734 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16735 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16737 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16738 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16738);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction854___action[] = "parser::ReduceAction854::(parser::ReduceAction::action)";
+void parser___ReduceAction854___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16743;
+  fra.me.meth = LOCATE_parser___ReduceAction854___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16745 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16746 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16747 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16749 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16750 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16752 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16753 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16753);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction855___action[] = "parser::ReduceAction855::(parser::ReduceAction::action)";
+void parser___ReduceAction855___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16758;
+  fra.me.meth = LOCATE_parser___ReduceAction855___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16760 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16761 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16762 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16763 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16765 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16765);
+  }
+  /* parser/parser.nit:16767 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16768 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16769 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16771 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16772 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16772);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction857___action[] = "parser::ReduceAction857::(parser::ReduceAction::action)";
+void parser___ReduceAction857___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16777;
+  fra.me.meth = LOCATE_parser___ReduceAction857___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16779 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16780 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16781 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16782 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16784 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16784);
+  }
+  /* parser/parser.nit:16786 */
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16786);
+  }
+  /* parser/parser.nit:16787 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16788 */
+  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
+  fra.me.REG[5] = fra.me.REG[3];
+  /* parser/parser.nit:16789 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16790 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16790);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction861___action[] = "parser::ReduceAction861::(parser::ReduceAction::action)";
+void parser___ReduceAction861___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16795;
+  fra.me.meth = LOCATE_parser___ReduceAction861___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16797 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16798 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16799 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16800 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16802 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16802);
+  }
+  /* parser/parser.nit:16804 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16805 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16806 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16808 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16809 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16809);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction862___action[] = "parser::ReduceAction862::(parser::ReduceAction::action)";
+void parser___ReduceAction862___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16814;
+  fra.me.meth = LOCATE_parser___ReduceAction862___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16816 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16817 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16818 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16820 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16821 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16823 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16824 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16824);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction863___action[] = "parser::ReduceAction863::(parser::ReduceAction::action)";
+void parser___ReduceAction863___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16829;
+  fra.me.meth = LOCATE_parser___ReduceAction863___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16831 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16832 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16833 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16834 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16836 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16836);
+  }
+  /* parser/parser.nit:16838 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16839 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16840 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16842 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16843 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16843);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction864___action[] = "parser::ReduceAction864::(parser::ReduceAction::action)";
+void parser___ReduceAction864___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16848;
+  fra.me.meth = LOCATE_parser___ReduceAction864___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16850 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16851 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16852 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16854 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16855 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16857 */
+  fra.me.REG[2] = fra.me.REG[4];
+  /* parser/parser.nit:16858 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16858);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_parser___ReduceAction865___action[] = "parser::ReduceAction865::(parser::ReduceAction::action)";
+void parser___ReduceAction865___action(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_parser;
+  fra.me.line = 16863;
+  fra.me.meth = LOCATE_parser___ReduceAction865___action;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* parser/parser.nit:16865 */
+  fra.me.REG[2] = NIT_NULL;
+  /* parser/parser.nit:16866 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16867 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* parser/parser.nit:16868 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  /* parser/parser.nit:16870 */
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 16870);
+  }
+  /* parser/parser.nit:16872 */
+  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = fra.me.REG[4];
+  /* parser/parser.nit:16873 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* parser/parser.nit:16874 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  }
+  /* parser/parser.nit:16876 */
+  fra.me.REG[2] = fra.me.REG[5];
+  /* parser/parser.nit:16877 */
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16877);
+  }
+  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
+  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
   return;
 }